¶pretty网页
将html按照网页的那种缩进方式排版
1 | # page 为页面源码 |
1 | from bs4 import BeautifulSoup as bs |
遇到的问题:bytes或者str不能序列化,解决的办法是去除lxml直接用soup装载。
¶查看网页的陷阱
1 | ## py3 |
1 | /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/macbook/PycharmProjects/sg_bus/Spider/trap.py |
¶避免方法
¶request修改header
用自带的urllib访问网站时请求头会是
1 | Accept-Encoding identity |
requests用来修改header信息,一个用来测试浏览器属性的网站是:https://www.whatismybrowser.com
1 | import requests |
¶处理cookie
cookie一方面通过在多个页面保存一个cookie从而保持登陆状态,有的网站甚至也不需要每次登陆就获得一个新的cookie,但对于反爬虫的一些网站,cookie来跟踪你的访问过程。
检查cookie的网站:www.editthiscookie.com,也可以作为chrome浏览器的插件使用。
查看cookie
1 | from selenium import webdriver |
有的网站例如google analytics当客户端执行脚本才产生cookie(或者浏览页面有点击行为等事件产生),因为我们的request不能执行这类的javascript代码,也就获取不到因此产生的cookie。
通过selenium和PhantomJS的一起使用还可以将得到的cookie用于新的webdriver,实现爬虫的伪装。
1 | from selenium import webdriver |
¶设置延时
利人利己的行为
尽管多线程可以快速加载页面(一个线程处理数据,另一个线程加载页面),对于爬虫来说应该保持以此页面加载且数据请求最小化。
time.sleep(3)