Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从所有亚马逊产品页面中提取产品信息(标题、价格、评论、asin)(python、网页抓取)_Python_Web Scraping - Fatal编程技术网

如何从所有亚马逊产品页面中提取产品信息(标题、价格、评论、asin)(python、网页抓取)

如何从所有亚马逊产品页面中提取产品信息(标题、价格、评论、asin)(python、网页抓取),python,web-scraping,Python,Web Scraping,我制作了一个刮削程序,可以浏览所有亚马逊产品页面(每个页面最多有24个产品,这是模板)。我运行了这个程序,但它只运行第一页。我应该在哪里修改代码?是否必须更改此行的位置(driver.find_element_by_id(“pagnNextString”)。单击())?我附上了密码。我将感谢任何帮助。多谢各位 节目 从时间导入睡眠 从urllib.parse导入urljoin 导入csv 导入请求 从lxml导入html 从selenium导入webdriver 输入io 标题={ “接受”:

我制作了一个刮削程序,可以浏览所有亚马逊产品页面(每个页面最多有24个产品,这是模板)。我运行了这个程序,但它只运行第一页。我应该在哪里修改代码?是否必须更改此行的位置(driver.find_element_by_id(“pagnNextString”)。单击())?我附上了密码。我将感谢任何帮助。多谢各位

节目

从时间导入睡眠
从urllib.parse导入urljoin
导入csv
导入请求
从lxml导入html
从selenium导入webdriver
输入io
标题={
“接受”:“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”,
“接受编码”:“gzip、deflate、sdch、br”,
“接受语言”:“en-US,en;q=0.8”,
“用户代理”:“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_10_5)AppleWebKit/537.36(KHTML,如Gecko)Chrome/51.0.2704.103 Safari/537.36”,
}
代理={
'http':'http://198.1.122.29:80',
“https”:”http://204.52.206.65:8080'
}
chrome\u options=webdriver.ChromeOptions()
chrome_选项。添加_参数('--proxy server=“%s”%%;”。加入(['%s=%s%%(k,v)表示proxies.items()中的k,v))
driver=webdriver.Chrome(可执行文件\u path=“C:\\Users\Andrei PC\Downloads\webdriver\chromedriver.exe”,
chrome\u选项=chrome\u选项)
标题=['产品标题','产品价格','审查','ASIN']
链接=[]
url='1〕https://www.amazon.com/s/ref=sr_pg_1?fst=as%3Aoff&rh=n%3A1055398%2Cn%3A284507%2Cn%3A510202%2Ck%3Aas&keywords=as&ie=UTF8&qid=1532414215'
尽管如此:
尝试:
打印('获取url[%s]…'%url)
response=requests.get(url,headers=headers,proxies=proxies,stream=True)
如果response.status_code==200:
尝试:
products=driver.find_elements_by_xpath('//li[以(@id,“result”)]开头])
对于产品中的产品:
title=产品。通过标签名称(“h2”)查找元素。文本
价格=([item.text]中的项目
product.find_elements_by_xpath('.//a/span[contains(@class,“a-color-base”)]]+[
“无价格”])[0]
review=([item.get_属性('textContent')用于中的项
product.find_elements_by_css_selector('i.a-icon-star>span.a-icon-alt')]+[
“无审核”])[0]
asin=product.get_属性(“数据asin”)或“无asin”
尝试:
数据=[标题、价格、评论、asin]
除:
打印('无项目')
以io.open('csv/furniture.csv',“a”,newline=“”,encoding=“utf-8”)作为输出:
writer=csv.writer(输出)
writer.writerow(数据)
驱动程序。按\u id(“PagnNext字符串”)查找\u元素。单击()
除索引器外:
打破
除例外情况外:
打印(“服务器拒绝连接…”
打印(“让我睡5秒钟”)
打印(“ZZzzzz…”)
睡眠(5)
print(“睡得很好,现在让我继续…”)
这些行执行以下操作:

  • url=urljoin('https://www.amazon.com,next_url)
    获取url作为字符串,例如
    https://www.amazon.com/some_source
    并将其分配给
    url
    变量
  • 对于范围内的i(len(url))
    迭代整数范围
    0,1,2,3。。。len(url)
    并将它们分配给
    i
    变量
  • driver.get(url[i])
    导航到字符例如
    driver.get(“h”)
    driver.get(“t”)
  • 我不知道你到底想做什么,但我想你需要

    url = urljoin('https://www.amazon.com', next_url)
    driver.get(url)
    
    更新

    如果需要检查所有页面,请尝试添加

    driver.find_element_by_xpath('//a/span[@id="pagnNextString"]').click()
    
    在每一页刮削之后


    还要注意的是,产品中产品的
    永远不会导致
    索引器
    ,因此您可以避免使用
    try
    /
    ,但此循环中的
    除外

    我尝试转到下一页并从所有这些页面提取产品信息。。这是一个老节目。我可以使用其他程序。我愿意接受任何建议。如果您需要检查所有页面,您可以尝试执行类似于
    驱动程序的操作。通过\u id(“pagnNextLink”)查找\u元素。单击()
    模拟下一步按钮单击我修改了问题主体和代码。你能看一下吗?我应该将行驱动程序放在哪里。通过id(“PagnNext链接”)查找元素。单击()?我猜在main
    try
    block的末尾,我尝试在主try/except块中使用它,但它输出了except。我认为这是代理问题。
    driver.find_element_by_xpath('//a/span[@id="pagnNextString"]').click()