Python基于Selenium实现自动打开百度并搜索及爬取京东图书

python3.8

一、任务要求

学习 Selenium自动化测试框架,在Anaconda的一个虚拟环境下安装selenium 和webdrive等必要库。熟练掌握在浏览器的开发者模式(Chrome 和Edge 浏览器按F12 )下对网页结构进行分析,找到对应网页元素的技能。然后完成下列任务:

1)对一个网页进行自动化测试。比如自动填充百度网页的查询关键字,完成自动搜索。
2)到http://quotes.toscrape.com/js/网站去爬取十句名言
3) 爬取京东网站上的感兴趣书籍信息(如关键字“python编程”的前200本图书),并保存。

二、任务一——自动打开百度并搜索

  1. 查看百度网页源码找到搜索框id以及搜索按钮id

在这里插入图片描述

  1. 导入相应包
    要使用selenium去调用浏览器,还需要一个驱动,不同浏览器的webdriver需要独立安装,
    如果是chrome在浏览器输入框输入chrome://version/ 查看相应版本,http://npm.taobao.org/mirrors/chromedriver/下载相应驱动即可

  2. 代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

s = Service("I:\python\myProjects\crawler\chromedriver.exe")# 驱动path

driver = webdriver.Chrome(service=s)
driver.get("https://www.baidu.com/")

# search=driver.find_element_by_id("kw")这种方式已经被弃用
search=driver.find_element(By.ID,"kw")
search.send_keys("伊木子曦")

# send_button=driver.find_element_by_id("su")
send_button=driver.find_element(By.ID,"su")
send_button.click()

注意: driver.find_element_by_id()有些不能用了,这个是版本更新,语法不适用新版python。
新版find_element需要引入by包,大家注意一下我的是python3.8。

find_element():只查找一个页面元素,方法返回值为WebElement对象;
find_elements():查找页面上所有满足定位条件的元素,方法返回值为WebElement对象的列表

  1. 效果展示
    在这里插入图片描述

三、任务二——网站爬取名言

  1. 查看网页源码,分析源码信息,找到对应标签

在这里插入图片描述

  1. 代码
# 爬取 http://quotes.toscrape.com/js/ 名人名言

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

s = Service("I:\python\myProjects\crawler\chromedriver.exe")
# 名言所在网站
driver = webdriver.Chrome(service=s)
driver.get("http://quotes.toscrape.com/js/")
# 表头
csvHeaders = ['作者','名言']
# 所有数据
subjects = []
# 单个数据
subject=[]
# 获取所有含有quote的标签
# res_list=driver.find_elements_by_class_name("quote")# 有些不能用了,这个是版本更新,下面是我适应的
res_list=driver.find_elements(By.CLASS_NAME, "quote")

# 分离出需要的内容
for tmp in res_list:
    subject.append(tmp.find_element(By.CLASS_NAME, "author").text)
    subject.append(tmp.find_element(By.CLASS_NAME, "text").text)
    print(subject)
    subjects.append(subject)
    subject=[]
  1. 效果展示
    在这里插入图片描述

四、任务三——爬取京东图书

  1. 查看https://www.jd.com/网页源码,分析源码信息,找到对应标签
    查看搜索框id以及搜索按钮class
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 代码
# 爬取 https://www.jd.com/ 京东图书
import csv
import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

s = Service("I:\python\myProjects\crawler\chromedriver.exe")

# 京东所在网站
driver = webdriver.Chrome(service=s)
driver.set_window_size(1920,1080)
driver.get("https://www.jd.com/")

# 输入需要查找的关键字
p_input = driver.find_element(By.ID, 'key')
p_input.send_keys('python编程')  # 找到输入框输入
time.sleep(1)
# 点击搜素按钮
button=driver.find_element(By.CLASS_NAME,"button").click()
time.sleep(1)
all_book_info = []
num=200
head=['书名', '价格']
#csv文件的路径和名字
path='./file/book.csv'
def write_csv(head,all_book_info,path):
    with open(path, 'w', newline='',encoding='utf-8') as file:
        fileWriter = csv.writer(file)
        fileWriter.writerow(head)
        fileWriter.writerows(all_book_info)
# 爬取一页
def get_onePage_info(num):
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    time.sleep(2)
    # 书籍列表
    J_goodsList = driver.find_element(By.ID, "J_goodsList")
    listbook = J_goodsList.find_elements(By.TAG_NAME, "li")
    for res in listbook:
        num = num-1
        book_info = []
        name =res.find_element(By.CLASS_NAME, "p-name").find_element(By.TAG_NAME, "em").text
        price = res.find_element(By.CLASS_NAME, "p-price").find_element(By.TAG_NAME, "i").text
        book_info.append(name)
        book_info.append(price)
        # bookdetail = res.find_element(By.CLASS_NAME, "p-bookdetails")
        # author = bookdetail.find_element(By.CLASS_NAME, "p-bi-name").find_element(By.TAG_NAME, "a").text
        # store = bookdetail.find_element(By.CLASS_NAME, "p-bi-store").find_element(By.TAG_NAME, "a").text
        # book_info.append(author)
        # book_info.append(store)
        all_book_info.append(book_info)
        if num==0:
            break
    return num

while num!=0:
    num = get_onePage_info(num)
    driver.find_element(By.CLASS_NAME, 'pn-next').click()  # 点击下一页
    time.sleep(2)
write_csv(head, all_book_info, path)
driver.close()


  1. 效果展示
    请添加图片描述
    在这里插入图片描述

五、参考

https://zhuanlan.zhihu.com/p/331712873
https://blog.csdn.net/m0_62298204/article/details/120802053

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是使用PythonSelenium爬取京东的步骤: 1. 安装PythonSelenium库。 2. 下载Chrome浏览器和对应版本的ChromeDriver。 3. 编写Python代码,使用Selenium打开Chrome浏览器,并访问京东网站。 4. 使用Selenium模拟用户操作,比如输入搜索关键词、点击搜索按钮等。 5. 使用Selenium获取搜索结果页面的HTML代码,并解析出需要的信息,比如商品名称、价格、评价等。 6. 将获取到的信息保存到本地文件或数据库中。 7. 可以使用循环和分页技术,爬取多页的搜索结果。 以上就是使用PythonSelenium爬取京东的基本步骤,具体实现可以参考相关教程和代码示例。 ### 回答2: Python是一种非常强大的编程语言,而Selenium是一个流行的自动化测试工具。我们可以使用这两个工具来爬取京东。下面是如何使用PythonSelenium爬取京东的步骤: 首先,你需要安装PythonSelenium库。在安装完成后,可以找到关于Selenium的基本信息、功能和API文档。 接下来,打开京东网站,找到输入关键词的搜索框。使用Selenium的find_element_by_name方法,通过名称找到搜索框并输入关键词。 接着,点击搜索按钮。同样使用Selenium的find_element_by_css_selector方法,通过CSS选择器找到搜索按钮,并使用click()方法进行点击。 然后,你需要解析搜索结果页面中的信息。使用Selenium获取搜索结果页面中的所有商品块,通过块中的css选择器和Selenium的find_element_by_css_selector方法获取商品的标题、价格和图片等信息。 最后,将这些信息保存到您的本地文件中或者输出到控制台上。 需要注意的是,京东会经常更新他们的网站,可能会导致爬虫无法正常工作。因此,你需要在你的代码中添加错误和异常处理机制,以便在出现错误时能够更好的处理。 总而言之,使用PythonSelenium爬取京东是一种相对简单而且高效的方法。这个过程需要一定的编程知识,但一旦了解了这种方法,你可以更方便地获取你需要的数据。 ### 回答3: Python是一种常用的编程语言,可以完成各种领域的编程任务。而Selenium则是一种自动化测试工具,可以实现模拟用户操作,对网页进行自动化测试。 京东是一个电商网站,其中包含了众多商品信息,包括名称、价格、评论等。使用PythonSelenium库,可以实现京东商品信息的自动爬取实现步骤如下: 1.安装Selenium库 首先需要安装Selenium库,可以在命令行中使用以下命令进行安装: ``` pip install selenium``` 2.下载Chromedriver Selenium需要一个浏览器驱动程序,可以在Selenium官网中下载Chromedriver。 3.编写爬虫代码 导入selenium库并声明driver,使用get方法打开网页。使用find_element_by_id方法获取搜索框,输入关键字并使用submit方法进行搜索。 接着,使用find_elements_by_css_selector方法获取商品列表中的每个商品元素,遍历每个商品元素并获取商品信息。例如,获取商品名称可以使用find_element_by_css_selector方法获取名称元素,并使用text属性获取文本内容。 将获取的商品信息存储到一个列表中。如果搜索结果有多页,可以通过判断下一页按钮是否可点击来进行翻页操作。 最后,将结果写入文件或数据库中。 4.反爬虫处理 对于一些反爬虫措施,例如验证码和IP封锁,我们需要使用一些反反爬虫技术来绕过限制。 例如,使用IP代理来实现IP切换,或使用验证码识别算法来自动化识别验证码。 在使用爬虫时,需要注意遵守相关法律法规和网站规定,不要进行非法采集和滥用数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值