【问题标题】:How to crawl several review pages using Python?如何使用 Python 抓取多个评论页面?
【发布时间】:2020-01-25 09:59:42
【问题描述】:

我有一个关于网络爬虫的问题。 我想获得几个使用 Python 的评论页面。

这是我的网络爬虫代码。

URL = 'https://www.example.co.kr/users/sign_in'

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'User-Agent':user_agent}
login_data = {'user':{'email':'id', 'password':'password', 'remember_me':'true'}}

client = requests.session()
login_response = client.post(URL, json = login_data, headers = headers)
print(login_response.content.decode('utf-8'))

jre = 'https://www.example.co.kr/companies/reviews/ent?page=1'
index = client.get(jre)
html = index.content.decode('utf-8')
print(html)

此代码仅获取 page=1,但我想获取 page=1, page=2, page3 .... 使用格式方法。我怎样才能做到这一点?

【问题讨论】:

    标签: python python-requests web-crawler


    【解决方案1】:

    您应该在每个页面上使用 while 或 for 循环,具体取决于您的需要。 试试这样的模式:

    page = 1
    while page <= MAX_PAGE or not REACHED_STOPPING_CONDITION:
    
      # Compose page url
      jre = f'https://www.example.co.kr/companies/reviews/ent?page={page}'
      # Get page url
      index = client.get(jre)
    
      # Do stuff...
    
      # Increment page counter
      page += 1
    

    我认为一旦您访问了网站,您就没有必要再次登录。如果需要,您应该将登录部分插入循环中。

    另一种浏览网站页面的方法是在文档中找到一种“下一页”或“上一页”引用,然后与它们进行交互:

    # Compose page url
    jre = 'https://www.example.co.kr/companies/reviews/ent?page=1'
    # Get page
    index = client.get(jre)
    
    while page <= MAX_PAGE or not REACHED_STOPPING_CONDITION:
    
      # Do stuff...
    
      # Search next page element (ex. by CSS selector)
      jre.find_element_by_css_selector('next-page').click()
      # Increment page counter
      page += 1
    

    【讨论】:

    • 谢谢,但它没有显示任何内容。我在 jupyter notebook 上使用,如何在代码中获取 html 信息。
    • 您可以使用浏览器检查页面。或者,您可以使用 BeautifulSoup 等专用库检查 DOM 属性
    • 当我使用你的推荐代码时,输​​出是 "\njre = 'example.co.kr/companies/reviews?page=1'\nindex = client.get(jre)\n\nhtml = index.content.decode('utf-8 ')\n打印(html)\n"
    猜你喜欢
    • 2022-06-30
    • 1970-01-01
    • 2018-03-21
    • 2021-03-17
    • 2022-01-10
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多