python爬虫笔记

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容