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