写在前面:学习<崔庆才_Python3爬虫入门到精通课程视频>动手写的小项目。 (一) 分析页面
访问今日头条页面(https://www.toutiao.com/)在输入框中输入要搜索的关键字,搜索出的页面点击图集。要爬取的就是这里的所有图集。
查看页面的URL可以发现这是一个POST请求,然后我们就检查页面找到POST请求包,进行分析。
这个就是POST请求服务器返回的response
这是一个JSON格式的数据,复制下来放在解析器中查看。(使用jsonView)
可以看到data字段中的aritical_url与要请求的页面url相同,那么只要抓取到这个json数据通过处理就可以获取当前搜索页面的所有要访问的url。
在搜索页面滑动鼠标时,浏览器向服务器发送了多个request请求,用来加载之后的图集。所通过修改offset值就可以获取之后的图集信息。
(二)过程分析首先要有一个初始的url作为入口,通过这个url来获取更多的url。这个url就是第一页搜索页的url,可以使用requests库模拟post请求,将参数添加到请求体,并且通过修改请求体中的offset值来获取下一个要爬取的页面。
def get_response(url,offset): header = {\'User-Agent\': \'Mozilla/5.0 (X11;Ubuntu;Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0\'} data = { \'offset\':offset, \'format\':\'json\', \'keyword\':\'历史\', \'autoload\':\'true\', \'count\':\'20\', \'cur_tab\':\'3\', \'from\':\'gallery\', } response = requests.get(url,headers=header,params=data) response.encoding = \'utf-8\' try: if response.status_code == 200: html = response.text return html return None except RequestException: print(\'请求页面出错!\') return None url = \'https://www.toutiao.com/search_content/\' for offset in range(0,121,20): html = get_response(url,str(offset))