[18682] 2018-05-19_python爬虫总结(一)

文档创建者:s7ckTeam
浏览次数:6
最后更新:2025-01-18
python爬虫总结(一)

python爬虫总结(一)

crhua huasec 2018-05-19

花了三天时间系统的学习了爬虫,这里做个小总结。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'

})

opener = urllib.request.build_opener(proxy_handler)

res = opener.open(url)

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

re库

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

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

S    匹配任意非空字符串

例如:

<td data="IP">1.1.1.1</td>

<td data="PORT">80</td>

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

<tdsdata="IP">(.*?)</td>s+<tdsdata="PORT">(.*?)</td>

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 大同小异。

结语

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







您需要登录后才可以回帖 登录 | 立即注册

本版积分规则