我在从此链接抓取数据时遇到了问题: https://www.yelp.com/user_details_reviews_self?userid=UsXqCXRZwSCSw0AT7y1uBg
我想抓取所有页面,但这给了我错误。
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
url = input("Enter the URL : ")
max_pages = int(input("Enter the Maximum Number of Pages you want to Extract : "))
for i in range(1, max_pages+1):
my_url = url[::-1].replace('1',str(i) ,1)[::-1]
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div", {"class" : "review"})
container = containers[0]
for container in containers:
business_id = container.find_all("a",{'data-analytics-label':'biz- name'})
bID_count = (business_id[0].attrs['data-hovercard-id'])
print(bID_count)
c:\ users \ shani \ appdata \ local \ programs \ python \ python37 \ lib \ urllib \ request.py 在_call_chain(self,chain,kind,meth_name,* args)中 处理程序中的处理程序的501: 502 func = getattr(handler,meth_name) -> 503结果= func(* args) 504,如果结果不是None: 505返回结果
c:\ users \ shani \ appdata \ local \ programs \ python \ python37 \ lib \ urllib \ request.py 在http_error_default(self,req,fp,code,msg,hdrs)中 647类HTTPDefaultErrorHandler(BaseHandler): 648 def http_error_default(self,req,fp,code,msg,hdrs): -> 649引发HTTPError(req.full_url,code,msg,hdrs,fp) 650 651类HTTPRedirectHandler(BaseHandler):
HTTPError:HTTP错误404:未找到
答案 0 :(得分:0)
由于以下原因您得到了错误:
my_url = url[::-1].replace('1',str(i) ,1)[::-1]
我猜您想更改页码,但是实际上您要在用户ID中替换1
,从而生成不存在的用户ID,这会导致404错误。
您需要更改分页在脚本中的工作方式。请注意它在该页面上的实际工作方式:
https://www.yelp.com/user_details_reviews_self?userid=UsXqCXRZwSCSw0AT7y1uBg&rec_pagestart=0
您的URL遗漏了最后一部分(&rec_pagestart=0
),该部分以10秒为单位递增,即0、10、20、30等...