目录
代码需求:
- 使用静态或动态网页技术获取网站首页数据;
- 能够实现当当网主页的网页元素动态交互;
- 能够正确解析图书图书编号、名称、作者、出版社、出版时间、价格、简介、图片的URL;
- 能够构造6位的图书图片文件名如“000001.jpg”;
- 能够实现翻页功能;
- 将全部解析的数据存储到 .CSV文件;
- 将全部图书的图片存储到当前目录中“download”文件夹;
- 将全部解析的数据存储到MySQL或MongoDB数据库。
1.导包
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver import Chrome
import csv
import pymysql
import os
import requests
其中selenium,pymysql,requests库都要在终端中执行pip install **命令安装库
2.模拟谷歌浏览器
由于是模拟谷歌浏览器,需要在运行代码的计算机上下载有谷歌浏览器,同时也需要根据谷歌浏览器的版本下载相应版本的谷歌浏览器驱动放在PyCharm 项目的根目录下,这里就不在过多赘述了,详情参考https://blog.csdn.net/weixin_44758876/article/details/130317803。
# url是要爬取的网站,这里使用selenium模拟谷歌浏览器爬取
url = "http://www.dangdang.com/"
my_chrome_options = Options()
my_chrome_options.add_experimental_option('detach',True) #不关闭浏览器
driver = Chrome(options=my_chrome_options)
driver.get(url)
# 输入想要爬取的图书类型
tushu = input()
shuru = driver.find_element(By.XPATH,'//*[@id="key_S"]')
shuru.send_keys(tushu)
# 点击搜索框
dianji = driver.find_element(By.ID, 'form_search_new').find_element(By.CLASS_NAME, 'button')
# selenium点击的元素被遮挡无法操作,所以直接用selenium支持的JS脚本方法点击
driver.execute_script('arguments[0].click()', dianji)
url = driver.current_url
3.爬取需要的内容
在爬取过程中会有图书作者和出版社为空的情况,这种情况下自动为作者和出版社添加"null"值。以及爬取图书图片的url的时候,存在爬取到"https://search.dangdang.com/Standard/Search/Extend/hosts/