【发布时间】:2018-01-26 17:45:14
【问题描述】:
我正在为一个网站创建一个 python 爬虫来获取价格、产品编号、猫号、描述。当我运行这个脚本时,它只会拉出页面的第一项,然后移动到下一个 url。 python 新手只是想知道如何修改以从页面中提取所有产品。感谢澄清第一个网址上只有一个产品,但第二个第三个都有许多没有被拉出的产品。
import requests
from bs4 import BeautifulSoup
import random
import time
product_urls = [
'https://www.qiagen.com/us/shop/pcr/primer-sets/miscript-precursor-assays/#orderinginformation',
'https://www.qiagen.com/us/shop/pcr/primer-sets/miscript-primer-assay-plate/#orderinginformation',
'https://www.qiagen.com/us/shop/pcr/primer-sets/miscript-primer-assays/#orderinginformation',
]
for URL in product_urls:
page = requests.get(URL)
soup = BeautifulSoup(page.text,"lxml")
timeDelay = random.randrange(5, 25)
for item in soup.select('.content'):
cat_name = item.select_one('.title').text.strip()
cat_discription = item.select_one('.copy').text.strip()
product_name = (item.find('div',{'class':'headline'}).text.strip())
product_discription = (item.find('div',{'class': 'copy'}).text.strip())
product_number = (item.find('td',{'class': 'textLeft paddingTopLess'}).text.strip())
cat_number = (item.find('td',{'class': 'textRight paddingTopLess2'}).text.strip())
product_price = (item.find('span',{'class': 'prc'}).text.strip())
print("Catagory Name: {}\n\nCatagory Discription: {}\n\nProduct Name: {}\n\nProduct Discription: {}\n\nProduct Number: {}\n\nCat No: {}\n\nPrice: {}\n\n".format(cat_name,cat_discription,product_name,product_discription,product_number,cat_number,product_price))
time.sleep(timeDelay)
【问题讨论】:
-
soup.select('.content')是否返回不止一项? -
soup.select('.container') 只产生这个。
-
检查您的任何
finds 是否返回None。 -
类别名称:miScript Precursor Assays 类别描述:miScript Precursor Assays areprecursor-miRNA– 产品名称:高级搜索设置 产品描述:miScript Precursor Assays areprecursor-miRNA– 产品编号:货号:可变价格: $91.80
-
似乎在每个网页上,只列出了一个结果与提到的产品信息。您是否要在页面右栏中抓取所有套件的产品列表?
标签: python web-scraping tags