python爬虫笔记

2018-05-30  本文已影响0人  XilinxYY

1、requests.get/post(url,headers = headers, params = params/data=data)

#使用requests库 根据网页get或post请求(存在传参的话get用params,post用data),得到一个Response对象

Response.text(打印文本)

Response.encoding(文本编码)补充:decode()解码:decode('gbk')把一个‘gbk’转unicode编码;encode()编码:把unicode转其他编码

Response.content(以字节的方式访问请求反应)

Response.status_code(响应状态码)

2、xpath解析

from lxml import etree(导包)

html_page = etree.HTML(Response.content)

data = html_page.xpath('//select[@id="cx_province"]/option/@value')(xpath提取)

3、bs4提取

from bs4 import BeautifulSoup(导包)

soup=BeautifulSoup(Response.content,‘lxml’)

links = soup.find_all('a',class_='')#查找所有clas=‘’的a标签

for  a in links:a.text(a标签下的文本),a.get('href')(a标签的连接)

4、正则提取

。。。。

5、json数据提取

json.loads()或者eval()

6、保存session对话访问和代理ip访问

def ip_sql():

#存入数据库

db = MySQLdb.connect("192.168.201.91","root","123456","spidertools" )# 打开数据库连接

cursor = db.cursor()# 使用cursor()方法获取操作游标

sql="SELECT * FROM proxyippool; "# 创建数据表SQL语句

cursor.execute(sql)

results = cursor.fetchall()# 获取所有记录列表

for row in results:

ip=row[0]+'://'+row[1]+':'+row[2]

ip_data.append(ip)

db.commit()

# 关闭数据库连接

db.close()

# return ip_data

def savesql_hotel(data,savepoint_name):

import sqlite3

    #创建数据库sqlite3

    con=sqlite3.connect(savepoint_name)

    con.execute('''CREATE TABLE IF NOT  EXISTS data

        (

        hoteltype varchar(200) NOT NULL,

        -- province varchar(200) NOT NULL,

        city varchar(200) NOT NULL,

        name varchar(1000) DEFAULT NULL,

        address varchar(1000) DEFAULT NULL,

        salesTel varchar(100) DEFAULT NULL,

        lat varchar(100) DEFAULT NULL,

        lng varchar(100) DEFAULT NULL,

        Url  varchar(1000) DEFAULT NULL);''')

    # 插入数据

    sql='insert into data(hoteltype,city,name,address,salesTel,lat,lng,Url)\

    values("%s","%s","%s","%s","%s","%s","%s","%s")'%(u'',data[0],data[1],data[2],data[3],data[4],data[5],data[6])

    con.execute(sql)

    con.commit()

    con.close()

se = requests.session()

ip= random.sample(ip_data,1)[0]从得到的代理ip池中随机取出一个

se.proxies = {'http': ip,'https': ip}

jstext=se.get('http://www.sicy......',headers=headers).content

上一篇下一篇

猜你喜欢

热点阅读