【发布时间】:2018-11-06 17:12:54
【问题描述】:
import csv
import requests
from bs4 import BeautifulSoup
urls = ["https://www.medplusmedicalsupply.com/exam-and-diagnostic?product_list_limit=25", "https://www.medplusmedicalsupply.com/exam-and-diagnostic?p=2&product_list_limit=25"]
for url in urls:
html = requests.get(urls).text
soup = BeautifulSoup(html, "html.parser")
products = soup.findAll('div', {"class": "product details product-item-details"})
all_product = []
for product in products:
product_details = dict()
product_details['name'] = product.find('a').text.strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ')
product_details['brand'] = product.find('div', {'class': 'value'}).text.strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ')
product_details['packaging'] = product.find('div', {'class': 'pack'}).text.strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ')
product_details['availability'] = product.find('div', {'class': 'avail pack'}).text.strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ')
product_details['price'] = product.find('span', {'class': 'price'}).text.strip('\n\r\t": ').strip('\n\r\t": ').strip('\n\r\t": ')
product_details['packaging'] = product_details['packaging'][9:] # here we're cutting redundant part of string "Brand: \n\n"
product_details['availability'] = product_details['availability'][16:] # here we're cutting redundant part of string "Availability: \n\n"
all_product.append(product_details)
print(all_product)
with open('products.csv', 'w+') as csvFile:
writer = csv.writer(csvFile)
writer.writerow(['Name', 'Brand', 'Packaging', 'Availability', 'Price'])
for product in all_product:
writer.writerow([product['name'], product['brand'],product['packaging'], product['availability'], product['price']])
这是尝试两个 URL 时的错误代码:
InvalidSchema: No connection adapters were found for '['https://www.medplusmedicalsupply.com/exam-and-diagnostic?product_list_limit=25', 'https://www.medplusmedicalsupply.com/exam-and-diagnostic?p=2&product_list_limit=25']'
我一直想知道是否有一种方法可以生成无限页面,而不是手动将 URL 放入 urls 变量中。我要抓取的网站有数以千计的产品和许多页面。感谢您的帮助!
【问题讨论】:
标签: python beautifulsoup python-requests