【发布时间】:2020-11-01 23:09:04
【问题描述】:
我有这个简单的抓取代码。
现在的问题是,这适用于具有相同内容的其他页面,而有些则不能。这是为什么呢?
我这里有一张图片。带下划线的位置是我要抓取的位置,另一个是 html 代码。现在请注意,此抓取过程适用于具有相同 HTML 代码的相同内容,与图像中看到的相同,但是!在某些页面中它不起作用!当我试图打印出该跨度应该属于的 html 代码块时,我想通了,但是当我在 sublime 中使用 find 功能时,我没有找到它。所以这意味着代码块丢失了,但在某些页面中它确实有效!
我希望我清楚我想说的话。这是源代码。看看它并尝试它,然后你就会明白我在说什么。
from bs4 import BeautifulSoup
import requests
url2 = "https://www.ebay.com.au/itm/Auth-Bell-Ross-Black-PVD-Mens-Wrist-Watch-46MM-BR01-92-S-Box-Docs/383600988865?hash=item59506692c1:g:-0wAAOSw1BBeVzyE"
url = "https://www.ebay.com.au/itm/Bell-Ross-BR03-94-Ceramic-Desert-Type-Chronograph-Automatic-Watch/174344419661?hash=item2897bcb94d:g:7M4AAOSwb~Ve7y0M"
rawdata = requests.get(url2)
soup = BeautifulSoup(rawdata.content,"html.parser")#try xml parser
product_block = soup.find("div",{"id":"CenterPanelInternal"})
#print(product_block)
product_name = product_block.find("h1",class_="it-ttl").text
product_condition = product_block.find("div",class_="condText").text
product_price = product_block.find("span",class_="notranslate").text
product_seller = product_block.find("div",class_="bdg-90").text.replace("\n",'')
product_loc = product_block.find("div",class_="iti-eu-bld-gry")#.text.replace("\n",'')
product_postTo = product_block.find("div",class_="vi-shp-pdg-rt")#.text.replace("\n",'')
product_img = product_block.find("img",class_="img").get("src")
print(product_name)
print(product_condition)
print(product_price)
print(product_seller)
print(product_loc)
print(product_postTo)
print(product_img)
现在将 url 更改为 url2 后,其中 url2 包含相同的 CONTENT!再次相同的内容,但不同的页面和数据,但来自 html 代码的类和 id 是相同的。然后我得到这个结果。
说实话,这太奇怪了。请帮助我:(我遗漏了一些东西?有什么我不明白的吗?请告诉我。您可以在代码中复制链接btw :) 非常感谢!谢谢!
【问题讨论】:
标签: python html web-scraping beautifulsoup screen-scraping