爬取亚马逊图书照片

from selenium import webdriver  #   自动化库
#   引入 ActionChains 类
from bs4 import BeautifulSoup
import re
import time
import requests
import os


headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"
}

#   启动googlechrome
#Firefox_options = Options()
#Firefox_options.add_argument('--headless')  # 隐藏chrome
browser = webdriver.Firefox(executable_path="C:\\Program Files\\Mozilla Firefox\\geckodriver.exe")#,options=Firefox_options)
# 读取要采集的文件
csv_str = open('采集文件.csv','r')
#   按行读取
list_d = csv_str.readlines()
# 循环输出
for str_list_num in list_d:
    str_list = str_list_num.strip('\n')
    url = "https://www.amazon.ca/s?k="+str_list+"&ref=nb_sb_noss" # url地址
    #   get URL
    time.sleep(3)
    d = browser.get (url)
    #   定位爬取信息
    browser.find_element_by_xpath("//*[contains(text(),'Paperback')]").click()
    # 获取大图链接,需要点击一下查看更多图片
    time.sleep(2)
    browser.find_element_by_xpath('//span[@class="thumb-text thumb"]').click()
    # 获取网页的str源代码
    response = browser.page_source
    time.sleep(5)
    soup = BeautifulSoup(response, 'html.parser')
    # 图片提取
    # 判断图片的的张数
    num_phohos = soup.find(class_="a-column a-span4 ig-thumbs a-span-last")
    num_phoho = num_phohos.find_all('div',class_="ig-thumb-image")
    mun = int(len(num_phoho))-1
    #   下载图片
    dl = soup.find(class_="a-column a-span8 a-text-center ig-main-image")
    dl_str = str(dl)
    pattern = re.findall('https://[^\s]*?.jpg',dl_str)
    #   创建存储图片文件夹
    #os.makedirs(os.path.split(os.path.realpath(__file__))[0] + '\\采集到的图片' )
    os.makedirs(os.path.split(os.path.realpath(__file__))[0] + '\\采集到的图片\\'  + str_list )
    IMAGE_PATH = os.path.split(os.path.realpath(__file__))[0] + '\\采集到的图片\\'  + str_list + '\\'
    time.sleep(3)
    # 第一页图片下载
    for d in pattern:
        photos_url = requests.get(d,headers=headers)
        pic = photos_url.content
        # 图片内容需要以二进制wb读写
        photo = open(IMAGE_PATH + "%s.jpg" % pattern.index(d),'wb')
        # 获取pic的二进制内容
        photo.write(pic)
        # 关闭文件
        photo.close()
    # 后续的图片
    n = 1
    for i in range(mun):
        browser.find_element_by_xpath('//img[@class="ig-thumb-inner "]').click()
        time.sleep(3)
    #   下载图片
        response_str = browser.page_source  # 重新获取一下网站源码
        soup_url = BeautifulSoup(response_str, 'html.parser')
        dl_url = soup_url.find(class_="a-column a-span8 a-text-center ig-main-image")
        dl_str = str(dl_url)
        pattern_str = re.findall('https://[^\s]*?.jpg',dl_str)
        for d_str in pattern_str:
            photos_url_str = requests.get(d_str,headers=headers)
            pic_str = photos_url_str.content
            # 图片内容需要以二进制wb读写
            photo = open(IMAGE_PATH +str(n)+ ".jpg" ,'wb')
            # 获取pic的二进制内容
            photo.write(pic_str)
            # 关闭文件
            photo.close()
            n = int(n)+1
 
 
 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Selenium来爬取亚马逊网站。Selenium是一个自动化测试工具,也可以用于网页爬取。下面是一个简单的示例,演示如何使用Selenium来爬取亚马逊的商品信息: ```python from selenium import webdriver # 使用Chrome浏览器驱动 driver = webdriver.Chrome() # 打开亚马逊网站 driver.get("https://www.amazon.com/") # 查找搜索框并输入关键词 search_box = driver.find_element_by_id("twotabsearchtextbox") search_box.send_keys("手机") # 替换为你要搜索的关键词 # 提交搜索请求 search_box.submit() # 查找所有商品信息元素 products = driver.find_elements_by_css_selector(".s-result-item") # 遍历每个商品信息元素并打印相关信息 for product in products: title = product.find_element_by_css_selector(".a-size-base-plus").text price = product.find_element_by_css_selector(".a-price-whole").text print("商品名:", title) print("价格:", price) print("------") # 关闭浏览器 driver.quit() ``` 在上述代码,我们使用Selenium的Chrome驱动来打开亚马逊网站,并在搜索框输入关键词"手机"。然后,我们使用CSS选择器来查找商品信息元素,并提取出其的商品名和价格信息。 请注意,使用Selenium爬取网站时需要下载相应的浏览器驱动,并将其配置在代码。此外,由于亚马逊网站对于自动化爬取有一些限制,可能需要通过设置延时、伪装请求头等方式来规避反爬机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值