簡體   English   中英

用Python抓取網站的第二頁不起作用

[英]Scraping the second page of a website in Python does not work

假設我要在這里抓取數據。

我可以在python 2.7中使用urlopenBeautifulSoup很好地做到這一點。

現在,如果我想使用該地址從第二頁抓取數據。

我得到的是第一頁的數據! 用Chrome的“查看頁面源”看了第二頁的頁面源,內容屬於第一頁!

如何從第二頁抓取數據?

該頁面具有非常異步的性質,有XHR請求構成搜索結果,並使用requests在代碼中模擬它們。 示例代碼是您的起點:

from bs4 import BeautifulSoup
import requests

url = 'http://www.amazon.com/Best-Sellers-Books-Architecture/zgbs/books/173508/#2'
ajax_url = "http://www.amazon.com/Best-Sellers-Books-Architecture/zgbs/books/173508/ref=zg_bs_173508_pg_2"

def get_books(data):
    soup = BeautifulSoup(data)

    for title in soup.select("div.zg_itemImmersion div.zg_title a"):
        print title.get_text(strip=True)


with requests.Session() as session:
    session.get(url)

    session.headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
        'X-Requested-With': 'XMLHttpRequest'
    }

    for page in range(1, 10):
        print "Page #%d" % page

        params = {
            "_encoding": "UTF8",
            "pg": str(page),
            "ajax": "1"
        }
        response = session.get(ajax_url, params=params)
        get_books(response.content)

        params["isAboveTheFold"] = "0"
        response = session.get(ajax_url, params=params)
        get_books(response.content)

並且不要忘記成為一名良好的網絡爬蟲公民並遵守使用條款。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM