【发布时间】:2019-10-11 13:45:48
【问题描述】:
我正在尝试制作此代码来抓取网站以获取产品名称。我正在尝试查找具有特定类的 p 标签。这是代码,当我运行它时它只是打印出来。我试图抓取的元素已被注释。
#<p class="product-name">Yaesu FT-DX101D HF/50MHz 100W SDR</p>
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
url = "https://www.gigaparts.com/products/radios-amps-and-repeaters#/?Category1=Radios&Category2=Radios%2C+Amps+and+Repeaters&Category3=Radio+Transceivers&search_return=all&Category4=Base+Stations"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
for i in range(10):
a_tags = soup.find("p", {"class": "product-name"})
print(a_tags)
time.sleep(2)
【问题讨论】:
-
如果循环和
time.sleep的目的是“等待”直到所有元素都可见,那么它不会起作用。您只需要解析响应并构建soup对象一次。它永远不会改变。如果该页面是使用 JS 动态加载的,那么BeautifulSoup不是正确的工具。您将需要使用selenium、mechanize或任何其他无头解决方案 -
无论如何,尝试
print(response.text)并搜索元素。如果不存在,则该页面确实依赖于 JS,需要使用我之前评论中的其他工具
标签: python web-scraping beautifulsoup