「这是我参与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查看链接及参数