非常慢的网络垃圾请求(尝试了我在互联网上找到的大多数解决方案,但仍然一无所获)

2024-10-02 22:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的webscrape代码,但是它太长了。在我设置超时之前,我等待了30多分钟,但它仍然没有返回任何内容。现在我设置了300秒的超时,它总是给我一个错误消息“读取操作超时”。 我正在使用Jupyter笔记本,并尝试使用Edge、Chrome和Opera作为我的浏览器,但没有任何效果。我可以向你保证,我的互联网很好,因为当我在网络浏览器中打开URL时,它会加载

import bs4
import pandas as pd
from bs4 import BeautifulSoup as bssoup
import urllib.request 
import re

hotel_reviewnames2 = []
hotel_review2 = []
for i in range (7,9):
    urlp1 = 'https://www.tripadvisor.com.ph/Hotel_Review-g298459-d3914035-Reviews-or'
    urlp2 = '-Park_Inn_by_Radisson_Davao-Davao_City_Davao_del_Sur_Province_Mindanao.html#REVIEWS/robots.txt'
    realurl = str(urlp1+str(i*5)+urlp2)
    print (realurl)
    hp6 = urllib.request.urlopen(realurl, timeout = 300)
    soup6 = bssoup (hp6, 'html.parser')
    hotelreviewsDavaonames3 = soup6.find_all('a', class_='ui_header_link bPvDb')
    hotelreviewsDavao3 = soup6.find_all('div', class_='pIRBV _T')
    for x in hotelreviewsDavaonames3:
        hotel_reviewnames2.append(x.text.split())
    for y in hotelreviewsDavao3[1::2]:
        hotel_review2.append(y.text.split('\n'))
df4 = pd.DataFrame({
    'Reviewer_Name':hotel_reviewnames2,
    'Reviews':hotel_review2
})    
print (df4)


Tags: inimportforas浏览器urllibhotelpd
2条回答

你正在(可能)做的事是被TripAdvisor "Terms and Conditions"禁止的

如果URL在您的web浏览器中工作,而不是在web scraper中工作,则他们可能正在使用未指定的“技术手段”来区分您的scraper请求与常规(合法)web请求,并对您的请求进行黑洞处理

我的建议是停止

如果你成功地绕过了这个障碍,他们可能会用其他方式来阻止你,可能升级为“停止”信件和诉讼。(或者他们可以玩真的下流的…)

斯蒂芬C所说的,这可能是有问题的。未经同意进行刮擦通常是不明智的

话虽如此,我相信刮痧总是会发生的,打败那些试图阻止你的人是很有趣的

我不完全确定你提到的课程的要求是什么,但也许可以研究一下硒。这是一个python包,有一个很好的教程here。它创建了一个真实的浏览器,可以用cookies模拟真实用户,并可能欺骗网站

或者,您可以查看是否可以将某些头添加到urllib.request以模拟实际的浏览器。我知道requests库添加了这些,但不确定urllib.requests是否有类似 headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Encoding": "gzip, deflate", "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8", "Dnt": "1", "Host": [INSERT SPECIFIC URLHOST], "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36", }的方法

资料来源:在一家搜集了大量公开数据的公司实习,有人试图拖我们的后腿。我的一个同事也用selenium打败了captchas

相关问题 更多 >