python爬虫采集

最近有个项目需要采集一些网站网页,以前都是用php来做,但现在十分流行用python做采集,研究了一些做一下记录。

采集数据的根本是要获取一个网页的内容,再根据内容筛选出需要的数据,

python的好处是速度快,支持多线程,高并发,可以用来大量采集数据,缺点就是和php相比,python的轮子和代码库貌似没有php全,而且python的安装稍微麻烦了点,折腾了好久。

python3的安装见连接:

https://www.cnblogs.com/mengzhilva/p/11059329.html

工具编辑器:

PyCharm :一款很好用的python专用编辑器,可以编译和运行,支持windows

python采集用到的库:

requests:用来获取网页的内容,支持https,用户登录信息等,很强大

lxml:用来解析采集的html内容,十分好用,比较灵活,但很多用法不好找,api文档不好找。

pymysql:连接操作mysql,这个就不用说了,将采集到的信息存到数据库。

基本上这三个就可以支持采集网页

安装代码:

用pip安装调用代码:

pip install pymysql
pip install requests
pip install lxml

 采集数据:

采集的代码和打印的结果:

# coding=utf-8 #设置页码编码,解决中文乱码
import re
import pymysql
import requests
from mydb import *
from lxml import etree
#模拟浏览器访问
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
#requests获取网页
respose = requests.get('https://www.cnblogs.com/mengzhilva/', headers=headers)
content = respose.text #获取内容
html = etree.HTML(content) #用lxml格式化
result = etree.tostring(html, encoding='utf-8')  # 解析对象输出代码
titles = html.xpath('//div[@class="day"]//div[@class="postTitle"]//a/text()') #查找相应数据
url = html.xpath('//div[@class="day"]//div[@class="postTitle"]//a/@href') #查找相应数据
print(titles)
print(url)
i=1
for val in titles:
    url = html.xpath('//div[@class="day"][' + format(i) + ']//div[@class="postTitle"]//a/@href')  # 根据循环查找列表地址
    print(val)
    print(url)
    #这里可以调用单独的函数来抓取详情页内容
    i+=1

python爬虫采集

 

原文出处:https://www.cnblogs.com/mengzhilva/p/11059768.html