热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用BeautifulSoup防止被Google抓取禁止

我想用Python和BeautifulSoup制作Google新闻抓取工具,但我读过,我

我想用PythonBeautifulSoup制作Google新闻抓取工具,但我读过,我有可能被禁止。

我还读到我可以使用一些旋转代理和旋转IP地址来防止这种情况。
我唯一要做的就是旋转User-Agent
您能告诉我如何添加旋转代理和旋转IP地址吗?

我知道应该在request.get()部分中添加它,但是我不知道如何。

这是我的代码:

from bs4 import BeautifulSoup
import requests
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
term = 'usa'
page=0
for page in range(1,5):
page = page*10
url = 'https://www.google.com/search?q={}&tbm=nws&sxsrf=ACYBGNTx2Ew_5d5HsCvjwDoo5SC4U6JBVg:1574261023484&ei=H1HVXf-fHfiU1fAP65K6uAU&start={}&sa=N&ved=0ahUKEwi_q9qog_nlAhV4ShUIHWuJDlcQ8tMDCF8&biw=1280&bih=561&dpr=1.5'.format(term,page)
print(url)
respOnse= requests.get(url,headers=headers)
soup = BeautifulSoup(response.text,'html.parser')
headline_text = soup.find_all('h3',class_= "r dO0Ag")
snippet_text = soup.find_all('div',class_='st')
news_date = soup.find_all('div',class_='slp')
print(len(news_date))


您可以使用Google提供的正确API进行搜索:

https://developers.google.com/custom-search/v1/overview

,

如果您想学习网页抓取,最好选择其他网站,例如reddit或一些在线杂志。 Google新闻(及其他Google服务)受到良好的保护,不会被抓取,并且它们会定期更改类的名称,以防止您通过简单的方式进行操作。

,

如果您的问题是“不被禁止怎么办?”,那么答案是“不要违反TOS”,这意味着完全不抓取内容并使用适当的搜索API。
根据您使用的IP地址,有一些“免费”的Google搜索用途。因此,如果您只抓取少量搜索,那应该没问题。

如果您的问题是“如何在请求模块中使用代理?”,那么您应该开始寻找here。

import requests
proxies = {
'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',}
requests.get('http://example.org',proxies=proxies)

但这只是python方面,您需要自己设置一个Web代理(甚至更好的代理池),然后使用一种算法,例如,每N个请求选择一个不同的代理。

,

您可以使用https://gimmmeproxy.com来旋转代理,它是python包装器:https://github.com/DeyaaMuhammad/GimmeProxyApi。

proxy = GimmeProxyAPI(protocol="https")
proxies = {
'http': proxy,'https': proxy
}
requests.get('https://example.org',proxies=proxies)

,

一个更简单的技巧是在 Brave Tor 浏览器中使用 Google colab,然后查看结果,您将获得不同的 IP 地址。

因此,一旦您获得所需的数据,您就可以在 jupyter notebook、VS Code 或其他地方使用这些数据。

看,截图中的结果:

使用免费代理会出错,因为免费代理上的请求太多,因此,您必须每次都选择代理流量较低的不同代理,因此从数百个中选择一个是一项艰巨的任务。

>

Using free proxies will get an error because there are too many requests on the free proxies so,you have to pick every time different one whose proxy is getting lower traffic so that's a terrible task to chose one out of hundreds

使用 Brave Tor VPN 获得正确结果:
Getting correct results with Brave Tor VPN


推荐阅读
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
author-avatar
DHY微学院朱曜宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有