【问题标题】:How to scrape a url having no of pages如何抓取没有页面的网址
【发布时间】:2016-02-27 16:25:40
【问题描述】:

我正在抓取一个没有页面的网页,我怎样才能抓取这些页面以获得我想要的信息。假设我正在抓取一个 URL http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446 这个页面有两页我怎样才能抓取这些总页面并获取总产品列表。

到目前为止我做了什么: 我正在从他们那里抓取一个网址我正在通过正则表达式抓取一个特定的网址 并尝试转到该 url 并从该链接他们没有其他页面包含信息链接产品名称。我想从所有页面中获取该产品名称。

我的代码:

from bs4 import BeautifulSoup
import urllib.request
import re
import json
response = urllib.request.urlopen("http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446")
soup = BeautifulSoup(response, "html.parser")
productlink = soup.find_all("a", href=re.compile(r"ExpProduct\.aspx\?corpid=[0-9]+.categoryno=[0-9]+"))
productlink = ([link["href"] for link in productlink])
print (productlink)

在这之后我被卡住了。我正在使用 python 3.5.1 和 Beautifulsoup

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    如果你想抓取页面图片,我建议CSS Selectors

    获取项目列表,之后可以搜索下一页。当您停止获取下一页时,您就知道您已经完成了。

    def get_next_page(soup):
        pages = soup.select('div[id="AspNetPager1] a[href]')
        for page in pages:
            if page.text == 'Next':
                return page
    
    response = urllib.request.urlopen("http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446")
    soup = BeautifulSoup(response, "html.parser")
    url = 'http://i.cantonfair.org.cn/en/'
    products = []
    
    next_page = get_next_page(soup)
    while next_page is not None:
        products += soup.select('div[class="photolist"] li')
        response = urllib.request.urlopen(url + next_page['href'])
        soup = BeautifulSoup(response, "html.parser")
        next_page = get_next_page(soup)
    products += soup.select('div[class="photolist"] li')
    
    product_names = set()
    for product in products:
        product_names.add(product.text)
    
    print(product_names)
    

    【讨论】:

    • 我只是想获取产品名称如何获取?
    • 似乎不是下一页。
    • 如果您在解释器中对其进行测试,您可以看到确实存在对下一页的请求。此外,您可以看到找到的项目的长度增加了大小。
    【解决方案2】:

    据我了解,您想要做的是抓取几页并抓取它们。

    我建议你看看Scrapy

    您可以抓取网页并抓取它们,Documentation 包含一个教程,我认为非常好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多