【问题标题】:How to scrape through search results spanning multiple pages with lxml如何使用 lxml 抓取跨越多个页面的搜索结果
【发布时间】:2015-09-20 12:08:36
【问题描述】:

我正在使用 lxml 来抓取网站。我想搜索一个包含 194 个项目的搜索结果。我的刮刀只能刮掉搜索结果的第一页。如何抓取其余的搜索结果?

url = 'http://www.alotofcars.com/new_car_search.php?pg=1&byshowroomprice=0.5-500&bycity=Gotham'
response_object = requests.get(url)

# Build DOM tree
dom_tree = html.fromstring(response_object.text)

之后是抓取功能

def enter_mmv_in_database(dom_tree,engine):
# Getting make, model, variant
name_selector = CSSSelector('[class="secondary-cell"] p a')
name_results = name_selector(dom_tree)
for n in name_results:
    mmv = str(`n.text_content()`).split('\\xa0')
    make,model,variant = mmv[0][2:], mmv[1], mmv[2][:-2]
    # Now push make, model, variant in Database
    print make,model,variant

通过查看我收到的列表,我可以看到只解析了搜索结果的第一页。如何解析整个搜索结果。

【问题讨论】:

    标签: python-2.7 web-scraping lxml python-requests screen-scraping


    【解决方案1】:

    我尝试浏览该网站,但它似乎处于离线状态。然而,我想帮助解决逻辑。

    我通常做的是:

    1. 向搜索 URL 发出请求(填充参数)
    2. 使用 lxml,在分页 div 中提取 last 页可用编号。
    3. 循环从第一页到最后一页,发出请求并抓取所需数据:

      for page_number in range(1, last+1):
          ## make requests replacing 'page_number' in 'pg' GET variable
          url = "http://www.alotofcars.com/new_car_search.php?pg={}&byshowroomprice=0.5-500&bycity=Gotham'".format(page_number)            
          response_object = requests.get(url)
          dom_tree = html.fromstring(response_object.text)
          ...
          ...
      

    我希望这会有所帮助。如果您有任何其他问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2018-12-19
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多