[英]Python Scrape with requests and beautifulsoup
我正在嘗試使用python請求和beautifulsoup刮取消費稅。 基本上我正在爬亞馬遜網頁。 我可以毫無問題地抓取首頁。
r = requests.get("http://www.amazon.in/gp/bestsellers/books/ref=nav_shopall_books_bestsellers")
#do some thing
但是,當我嘗試使用網址“#2”抓取第二頁時
r = requests.get("http://www.amazon.in/gp/bestsellers/books/ref=nav_shopall_books_bestsellers#2")
我看到r的值仍等於1頁的值。
r = requests.get("http://www.amazon.in/gp/bestsellers/books/ref=nav_shopall_books_bestsellers")
不知道是#2在向第二頁發出請求時引起任何麻煩。 我也用谷歌搜索有關問題,但找不到解決方法。 用#values進行網址請求的正確方法是什么。 如何解決這個問題。 請指教。
“#2”是片段標識符 ,在服務器端不可見。 HTML內容,你得到的,開放“ http://someurl.com/page#123 ”是相同的“內容http://someurl.com/page ”。
在瀏覽器中,您會看到第二頁,因為頁面的javascript會看到片段標識符,創建ajax請求並將新內容注入到頁面中。 您應該找到並使用ajax請求的網址:
看起來我們的網址是:
http://www.amazon.in/gp/bestsellers/books/ref=zg_bs_books_pg_2?ie=UTF8&pg=2&aj
可以很容易地理解,我們所需要做的就是更改“ pg”參數值以獲取另一頁。
您需要在描述分頁的錨標記的href
屬性中請求url。 在頁面的底部。 如果我在Google Chrome瀏覽器的開發人員控制台中檢查頁面,則會發現首頁的url
是這樣的:
http://www.amazon.in/gp/bestsellers/books/ref=zg_bs_books_pg_1?ie=UTF8&pg=1
第二頁的網址是這樣的:
http://www.amazon.in/gp/bestsellers/books/ref=zg_bs_books_pg_2?ie=UTF8&pg=2
第二頁a
標簽如下:
<a page="2" ajaxUrl="http://www.amazon.in/gp/bestsellers/books/ref=zg_bs_books_pg_2?ie=UTF8&pg=2&ajax=1" href="http://www.amazon.in/gp/bestsellers/books/ref=zg_bs_books_pg_2?ie=UTF8&pg=2">21-40</a>
因此,您需要更改請求網址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.