Requests后用Beautifulsoup找不到指定元素(原来是页面元素被注释)
这个问题是在Requests抓取百度贴吧内容列表时出现,可能在抓取其他某些网页时也会出现这个问题。
在用Requests时大家习惯加上header,这个header往往是Chrome的header。但是加了这个header就会导致页面中大部分html标签被放在了注释里面,后面用Beautifulsoup的find或是select都找不到对应的标签。
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
html = requests.get(url=search_url, headers=head)
这时的解决办法就是: (1)直接把header删掉,不添加header看看是否能抓取到; (2)把Chrome的header换成IE的header. 基本上就能搞定了,下面再用Beautifulsoup去提取页面元素。 这虽然是一个很小的问题,但往往会纠缠你一两个小时找不出原因。 下面是两个header。 谷歌浏览器的User-Agnet: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 IE浏览器的User-Agnet: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;