一、爬取网站的流程
- 确定网站那个url是数据的来源
- 简要分析一下网站结构,查看数据一般放在哪里
- 查看是否有分页,解决分页的问题
- 发送请求,查看response.text里面是否有想要的数据内容
- 如果有数据,就用响应的提取数据的方法提取数据保存
二、注意事项:
刚开做爬虫项目,先不要用类去做,只需要关注数据的来源等问题的解决,不要关注类结构的设计。
三、可迭代对象和迭代器
可迭代对象就是有__iter__属性的对象
迭代器:有__next__属性的对象
iter(可迭代对象)可以转换成迭代器
可迭代对象有哪些:
-
list
-
dict
-
tuple
-
str
-
bytes
-
set
-
迭代器
-
生成器
-
文件流
如何打印一个文件同时输出行号。
fp = open(‘shabei_spider.py’,‘r’,encoding=‘utf-8’)
print(fp)
#如何输出行号。
for i,c in enumerate(fp,1):
print(i,c)
四、反爬
(一)反爬措施以及应对措施
反爬策略:
-
通过use_agent客户端表示来判断是否是爬虫
解决办法:封装user_agent请求头 -
通过访问频率来判断
解决办法:设置爬取间隔
a = random.randint(5)
time.sleep(a) -
封ip
解决办法:设置代理ip -
页面内容无法直接获取数据,页面都是js代码
selenium+phantomjs可以获取页面数据xpath://div[@class=“abc”]/p[@id=“p1”]
css选择器:div.abc p #p1
(二)动态html页面的处理方法
常见的页面技术
- js
html使我们页面的骨架,css是页面装饰,js是页面的灵魂 - jquery
jquery是一个js库,可以使js代码更加简化 - ajax:web页面的异步请求,是一种技术
- DHTML
(三)selenium+phantomjs就可以处理这种问题
- selenium:是web自动测试工具
pantomjs:是一个无界面的浏览器。可以运行js代码,拿到页面数据 - selenium和phantomjs的下载
pip install selenium==2.48.0
百度phantomjs镜像 - phantomjs环境变量的配置
有第三方插件的,都可以放在anaconda/scripts文件下面 - chromedriver
chromedriver镜像,注意和自己的chrome浏览器版本对应