在使用漂亮的汤爬网网站上的数据时,我面临HTTP 404和503错误

时间:2019-07-14 05:44:01

标签: python-3.7

我在从此链接抓取数据时遇到了问题: 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:未找到

1 个答案:

答案 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等...