python爬虫小结

112 阅读2分钟

「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战

步骤

获取地址

分析网页结构

解析网页

1.html标签

beautifulsoup4

xpath

目录树

htmlparser

2.ajax异步加载

json

3.js加载

万能解析:正则表达式

re模块

re.math()

re.search()

re.findall()

re.match (pattern, string, flag = 0)、

re.search (pattern, string, flag =0)、

re.findall (pattern, string, flag= 0)。

其中:

❑re.match()函数:从字符串的首字母开始匹配,如果string中包含pattern则匹配成功,返回match对象,失败则返回None。

❑re.search()函数:如果string中包含pattern,则返回Match对象,否则返回None。如果string中存在多个pattern则只返回第一个。与match()只能从第一个字符开始匹配不同,search()函数可以与要匹配的字符串的任一个字符进行匹配。

❑re.findall()函数:返回string中所有与pattern相匹配的字符串,返回形式为数组。

这三个函数中的参数含义相同,具体如下。

❑pattern:匹配的正则表达式。

❑string:要匹配的字符串。

❑flag:控制正则表达式的匹配方式,如是否区分大小写、多行匹配等。

根据网页结构,内容格式爬取

存储

txt

f = open("text.txt", 'a')
f.write("xxx")
f.close()

csv

数据库:mysql,mongodb

非结构化数据:图片,音频,视频

通过远程下载数据:urlretrieve()

scrapy

原理:首先从初始URL开始,Scheduler会将其交给Downloader进行对目标地址发送请求,得到返回内容后交给Spider进行解析。Spider对返回内容通过正则表达式、Htmlpaser、lxml等方式解析出所需内容,分析出的结果有两种:一种是需要进一步抓取的链接,这些链接会被再次传入Scheduler进行发送请求;另一种是需要保持的数据,它们被传送到ItemPipeline中,在那里对数据进行后期的存储。另外,在数据流动的通道中还可以安装各种中间件(如代理),支持各需求场景。

使用:

其中dangdang为该项目的根目录文件夹名称,Spiders为该爬虫核心模块文件夹,items.py文档定义需要爬取哪些数据字段,pipelines.py文档定义爬取数据的存储路径和存储方式,将爬取并解析后的数据持久化到本地,settings.py文档定义爬虫的调度配置方式(如请求等待时间、是否禁止爬虫等), dangdang. py文档为爬虫核心的对目标网址进行发送请求,解析返回内容,处理异常情况等。

分布式爬虫

redis

自动化爬虫,服务器部署

反爬虫

代理ip

user-agent

ajax加载:异步java和xml

调试,internet,xhr或doc

模拟登陆

手机app:fiddler抓包,online获取本机ip地址,设置手机代理ip地址为此,端口号8888。在手机打开目标页面,在fiddler查看链接及参数