如何使用xpath或bs4从两个不同的模板获取价格?(python、web scraping)
我有两个不同价格的模板。对于第一个模板,price具有id priceblock\u ourprice,并且打印正确,但是对于第二个模板,它不打印价格。如何以csv格式打印价格?你可以用 还是美味的汤。这段代码的问题在于第一个try/except语句。我附上了代码和输出(csv)。我将感谢任何帮助 这是输出(CSV)如何使用xpath或bs4从两个不同的模板获取价格?(python、web scraping),python,selenium,web-scraping,Python,Selenium,Web Scraping,我有两个不同价格的模板。对于第一个模板,price具有id priceblock\u ourprice,并且打印正确,但是对于第二个模板,它不打印价格。如何以csv格式打印价格?你可以用 还是美味的汤。这段代码的问题在于第一个try/except语句。我附上了代码和输出(csv)。我将感谢任何帮助 这是输出(CSV) 我用我的浏览器检查了这两个URL,在第二个URL中似乎没有id为priceblock的span。所以当然driver.find\u element\u by\u xpath找不到
我用我的浏览器检查了这两个URL,在第二个URL中似乎没有id为priceblock的
span
。所以当然driver.find\u element\u by\u xpath
找不到合适的跨度
但是我可以找到这个跨度:$62.26
当您使用浏览器时,amazon页面服务器的内容可能不同,而在运行selenium时,页面服务器的内容可能不同(例如,因为cookies)。请仔细检查您在selenium中获得的页面的来源。尝试
price=driver。通过xpath('//span[@id=“color\u name\u 0\u price”]/span;//span[@id=“priceblock\u ourprice”]]查找\u element\u。text
为应该打印第二个价格的单元格提供空白。这是因为没有带有@id=“priceblock\u ourprice”的节点
第页,请输入正确的代码好吗?谢谢。对于第二个try/catch,它给出了包含priceblock\u ourprice的模板的价格,但问题在于第一个try/catch(第二个模板)。你能运行代码查看输出(csv)吗?或者你能发布代码吗?62.26美元是旧产品的价格。我打印的价格是66.95美元,我想这就是价格。下面这些卖家提供。来吧,我们不会重写你的代码。这不是一个代码修复服务。阅读答案和评论,然后自己修复。如果您还有任何疑问或问题,请清楚地询问,以便我们理解。
import csv
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
from lxml import html
links = [
'https://www.amazon.com/Stock-Your-Home-Spinning-Organizer/dp/B00424ILAQ/ref=sr_1_4012/138-3260504-2979110?s=bedbath&ie=UTF8&qid=1520585702&sr=1-4012&keywords=-sdfg',
'https://www.amazon.com/Seward-Trunk-College-Footlocker-SWD5120-10/dp/B004835DI4/ref=sr_1_3?s=furniture&ie=UTF8&qid=1520407190&sr=1-3&keywords=-hgfd'
]
proxies = {
'http': 'http://218.50.2.102:8080',
'https': 'http://185.93.3.123:8080'
}
def get_information(driver,urls):
with open('csv/sort_products.csv', "w", newline="", encoding="utf-8") as infile:
writer = csv.writer(infile)
writer.writerow(['Price', 'Link'])
for url in urls:
driver.get(url)
soup = BeautifulSoup(driver.page_source,"lxml")
try:
price = driver.find_element_by_xpath('//span[@id="color_name_0_price"]/span').text
except:
price='No price v1'
print('No price v1')
try:
price = driver.find_element_by_xpath('//span[@id="priceblock_ourprice"]').text
except:
price='No price v2'
print('No price v2')
writer.writerow([ price, url])
print(f'{url}\n')
if __name__ == '__main__':
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server="%s"' % ';'.join(['%s=%s' % (k, v) for k, v in proxies.items()]))
driver = webdriver.Chrome(executable_path="C:\\Users\Andrei-PC\Downloads\webdriver\chromedriver.exe",
chrome_options=chrome_options)
get_information(driver,links)
driver.quit()