python爬虫总结(一)

花了三天时间系统的学习了爬虫,这里做个小总结。python爬虫主要用到requsts,urllib库,解析数据常用的有re,BeautifulSoup,PyQuery库。另外还有自动化爬取数据的selenium 库,以及爬虫框架pyspider,scrapy。

爬虫的开发流程

1.分析目标网站的网页结构

2.清晰目标数据有哪些

3.找到当前数据的请求,是否是ajax异步请求,一般先保存网页,然后本地打开,如果和原网页不同,则是异步请求。

反爬虫策略

1.根据UA屏蔽请求

2.只允许登录用户请求数据

3.用验证码限速爬虫

4.使用js动态生成token屏蔽爬虫

5.根据规则禁用IP

针对这些反爬虫策略常用的绕过策略有:

1.加上请求头

2.设置代理

3.使用PlantomJS模拟用户请求抓取

Request库

import requests

headers = {

'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0'

}

proxies = {

'http':'113.109.162.85:808'

}

res = requests.get(url,headers=headers,proxies=proxies)

print(res.text)

Urllib库

import urllib.rerquest

proxy_handler = urllib.request.ProxyHandler( {

'http':'113.109.162.85:808'

})

res = opener.open(url)

print(res.read().decode('utf-8')

re库

很多数据用正则匹配起来比较麻烦,这里我主要介绍两个正则符号

\s 匹配任意空白字符串,等价于 [\t\n\r\f].

\S 匹配任意非空字符串

例如:

1.1.1.1

80

两个td 之间有换行,所以正则为

(.*?)\s+(.*?)

Beautiful库

可以把源代码解析成 lxml xml两种格式。

soup = BeautifulSoup(html,'lxml')

soup = BeautifulSoup(html,'xml')

有三种选择器,

1.标签选择器

获取属性

soup.p['name']

获取内容

soup.p.string

2.标准选择器

find_all() 返回所有元素,返回结果是列表

find() 返回单个元素,

soup.find('table',{'id':'list-1'})

3.css选择器

通过select() 直接传入css选择器即可完成选择,返回类型是列表

通过标签名查找

soup.select('title')

通过class/id 查找

soup.select('#list')

组合查找

soup.select('p .list_1')

通过属性查找

soup.select('a[class="sister"]')

获取内容

soup.select('p .list_1').text()

在抓取数据的时候,我常用css 选择器。

PyQuery库

初始化html

from pyquery import PyQyery as pq

doc =pq(html)

print(doc('titile'))

初始化url

doc=pq(url)

print(doc('title'))

初始化文件

doc=pq(filename='demo.html')

print(doc('title')

css选择器

返回一个列表

print(doc('#list li'))

用法和bs 大同小异。

结语

学会熟练运用这些库,爬取一些网站没什么大问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519G1BZXG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券