动态网页爬虫

安装实验所需要的包

#安装selenium
pip install selenium
 
#查看是否安装成功
pip show selenium

请添加图片描述
用库去调用服务器,要下载对应浏览器的webdriver

查看edge的版本
在这里插入图片描述
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
下载对应版本的驱动

请添加图片描述
找到下载好的文件的路径,将它添加到环境变量中
请添加图片描述
打开百度

from selenium import webdriver
driver=webdriver.Edge('E:\\FireFoxDownload\\edgedriver_win64\\msedgedriver.exe')
#进入网页
driver.get("https://www.baidu.com/")

在这里插入图片描述
搜索京东

p_input = driver.find_element_by_id("kw")
p_input.send_keys('京东')

按钮搜索的id为su

#点击搜索按钮
p_btn=driver.find_element_by_id('su')
p_btn.click()

Selenium:requests+Selenum爬取京东图书

from selenium import webdriver
import time
import csv
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
from selenium import webdriver
driver = webdriver.Edge('E:\QQdownload\edgedriver_win64\msedgedriver.exe')#浏览器.exe文件的位置(见附图1)
driver.get("https://www.jd.com/")
#加载页面
time.sleep(3)
 
#定义存放图书信息的列表
goods_info_list=[]
#爬取200本
goods_num=200
#定义表头
goods_head=['价格','名字','链接']
#csv文件的路径和名字
goods_path='E:\\QQdownload\\Tos.csv'
 
#向输入框里输入Java
p_input = driver.find_element_by_id("key")
p_input.send_keys('小王子')
 
#button好像不能根据类名直接获取,先获取大的div,再获取按钮
from_filed=driver.find_element_by_class_name('form')
s_btn=from_filed.find_element_by_tag_name('button')
s_btn.click()#实现点击
 
#获取商品价格、名称、链接
def get_prince_and_name(goods):
    #直接用css定位元素
    #获取价格
    goods_price=goods.find_element_by_css_selector('div.p-price')
    #获取元素
    goods_name=goods.find_element_by_css_selector('div.p-name')
    #获取链接
    goods_herf=goods.find_element_by_css_selector('div.p-img>a').get_property('href')
    return goods_price,goods_name,goods_herf
 
def  drop_down(web_driver):
    #将滚动条调整至页面底部
    web_driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
    time.sleep(3)
 
#获取爬取一页
def crawl_a_page(web_driver,goods_num):
    #获取图书列表
    drop_down(web_driver)
    goods_list=web_driver.find_elements_by_css_selector('div#J_goodsList>ul>li')
    #获取一个图书的价格、名字、链接
    for i in tqdm(range(len(goods_list))):
        goods_num-=1
        goods_price,goods_name,goods_herf=get_prince_and_name(goods_list[i])
        goods=[]
        goods.append(goods_price.text)
        goods.append(goods_name.text)
        goods.append(goods_herf)
        goods_info_list.append(goods)
        if goods_num==0:
            break
    return goods_num
 
while goods_num!=0:
    goods_num=crawl_a_page(driver,goods_num)
    btn=driver.find_element_by_class_name('pn-next').click()
    time.sleep(1)
write_csv(goods_head,goods_info_list,goods_path)

效果:
在这里插入图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值