我正在运行一个刮刀来检索产品名称,Cat No,Size和Price但是当我运行脚本时它不会给我输出或错误消息。我正在使用Jupyter Notebook而不确定这是不是问题。我也不确定是否因为我将其归结为CSV文件,如果这也给它带来问题。任何帮助将不胜感激。
这是我正在运行的代码。
from selenium import webdriver
import csv, os
from bs4 import BeautifulSoup
os.chdir(r'C:\Users\kevin.cragin\AppData\Local\pip\Cache\wheels\09\14\7d\1dcfcf0fa23dbb52fc459e5ce620000e7dca7aebd9300228fe')
driver = webdriver.Chrome()
driver.get('https://www.biolegend.com/en-us/advanced-search?GroupID=&PageNum=1')
html = driver.page_source
containers = html.find_all('li', {'class': 'row list'})
with open("BioLegend_Crawl.csv", "w") as f:
f.write("Product_name, CatNo, Size, Price\n")
for container in containers:
product_name = container.find('a',{'itemprop':'name'}).text
info = container.find_all('div',{'class':'col-xs-2 noPadding'})
catNo = info[0].text.strip()
size = info[1].text.strip()
price = info[2].text.strip()
print('Product_name: '+ product_name)
print('CatNo: ' + catNo)
print('Size: ' + size)
print('Price: ' + price + '\n')
f.write(','.join([product_name,catNo,size,price]))
答案 0 :(得分:0)
您使用的网站在技术上是从数据库加载信息,因此默认情况下,网站HTML中没有预设哪些产品名称已加载。必须根据搜索约束动态加载它们。
因此,您需要下载chromedriver.exe(如果您使用谷歌浏览器)或其他一些自动化您的网络浏览器的驱动程序(PhantomJS是另一个好的驱动程序),那么您需要指定机器上的路径位置到哪里这个.exe就像这样生活:
import selenium import webdriver
import csv, os
from bs4 import BeautifulSoup
os.chdir('Path to chromedriver or other driver')
driver = webdriver.Chrome()
driver.get('Link to your webpage you want to extract HTML from')
html = driver.page_source
soup = BeautifulSoup(html)
containers = soup.find_all('ul',{'id':'productsHolder'})
with open("BioLegend_Crawl.csv", "w") as f:
f.write("Product_name, CatNo, Size, Price\n")
for container in containers:
product_name = container.find('a',{'itemprop':'name'}).text
info = container.find_all('div',{'class':'col-xs-2 noPadding'})
catNo = info[0].text.strip()
size = info[1].text.strip()
price = info[2].text.strip()
print('Product_name: '+ product_name)
print('CatNo: ' + catNo)
print('Size: ' + size)
print('Price: ' + price + '\n')
f.write(','.join([product_name,catNo,size,price]))