您的位置:首页 >文章内容

爬虫遇到过什么陷阱?

来源:互联网 作者:admin 时间:2020-12-16 10:51:21

    有些小白可能在初次爬虫时有很多不太了解的地方,导致频繁踩坑,下面给大家总结了几种小白在爬虫爬取过程中可能会遇到的问题。希望大家看完之后能够少走点弯路。


爬虫遇到过什么陷阱?


    (一)请求下来的HTML中文编码问题


    import requests


    from bs4 import BeautifulSoup


    res = requests.get(newsurl)


    soup = BeautifulSoup(res.text,"lxml")


    news_item = soup.select(".news-item")print(news_item[0].select("h2")[0].text)


    结果:


    ??????é?¨??????è?????????±??????? é????é??


    解决办法


    import requestsfrom bs4 import BeautifulSoup


    res = requests.get(newsurl)


    soup = BeautifulSoup(res.text.encode(res.encoding).decode('utf-8'),"lxml") #添加编解码


    news_item = soup.select(".news-item")print(news_item[0].select("h2")[0].text)


    (二)爬虫长时间运行报错


    urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))


    解决办法一,设置请求头user-agent:


    headers = requests.utils.default_headers()


    headers['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'


    #headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36'


    r = requests.get('https://academic.oup.com/journals', headers=headers)


    解决办法二:更换ip地址


    (三) UA(用户代理)欺骗


    UA,即 User-Agent,是Http协议的一部分,属于头域的组成部分,发送 http 请求时,请求头中会有 User-Agent字段。服务器通过该字段来分辨发送请求的浏览器类型、版本、内核以及操作系统信息等。在浏览器 console 可用如下命令来获得该浏览器的 UA 标识:


    navigator


    .userAgent


    每当你访问一个网站,它会通过 UA(用户代理)来获取你浏览器的信息。你在有些网站上 看不到任何内容,除非你提供一个用户代理。另外,网站对不同的浏览器展示不同的内容。网站不希望屏蔽真正的用户,当如果你用同一个用户代理每秒发送两百个请求的话,你的行为看起来会非常的可疑。一种可能的解决方法是生成随机的用户代理或自己设置一个。有时候通过手机浏览器访问得到的页面会更加简洁,更容易抓取,所以伪装成手机浏览器也是一种好方法。


    当然也有一些未列举出来的问题,大家以后在爬虫爬取过程中有可能还会遇到多种多样的问题,在遇到问题时及时记录下来,也能方便以后的查阅,建议多和爬虫大神交流获取一些心得。


因为专业! 所以简单! 产品至上,价格实惠 是我们服务追求的宗旨

免费试用