python爬取名言和商品信息

python爬取名言和商品信息,第1张

python爬取名言和商品信息

文章目录
  • 一,准备
  • 二,代码
  • 三,爬取指定网页http://quotes.toscrape.com/js/的名言
  • 四,Selenium:requests+Selenum爬取京东物品
  • 五,实验结果
  • 六,总结
  • 七,参考

一,准备

安装本次实验所需安装包
使用anaconda prompt

pip install selenium

然后去下载驱动,根据不同的浏览器的话需要下载不同的驱动,这里推荐Chrome
驱动下载网址:https://npm.taobao.org/mirrors/chromedriver/
下载之后是一个exe文件,然后将这个文件的路径添加到环境变量

二,代码

运行结果我就放在最后面的视频里面了,就不一一截屏了
打开浏览器,并打开百度

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
#进入网页
driver.get("https://www.baidu.com/")

右键,对百度页面进行检查
可以发现搜索框的id是kw
所以就简单了
在搜索框里面输入

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()
三,爬取指定网页http://quotes.toscrape.com/js/的名言

同样,先打开网页,找到名言的id,不用想,应该是text,毕竟是text文本格式的。
所以直接代码

from bs4 import BeautifulSoup as bs
from selenium import webdriver
import csv
from selenium.webdriver.chrome.options import Options
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('http://quotes.toscrape.com/js/')
#定义csv表头
quote_head=['名言','作者']
#csv文件的路径和名字
quote_path='C:\Users\hp\Desktop\pachong.csv'
#存放内容的列表
quote_content=[]

'''
function_name:write_csv
parameters:   csv_head,csv_content,csv_path
csv_head:     the csv file head
csv_content:  the csv file content,the number of columns equal to length of csv_head
csv_path:     the csv file route
'''
def write_csv(csv_head,csv_content,csv_path):
    with open(csv_path, 'w', newline='') as file:
        fileWriter =csv.writer(file)
        fileWriter.writerow(csv_head)
        fileWriter.writerows(csv_content)
        print('爬取信息成功')

###
#可以用find_elements_by_class_name获取所有含这个元素的集合(列表也有可能)
#然后把这个提取出来之后再用继续提取
quote=driver.find_elements_by_class_name("quote")
#将要收集的信息放在quote_content里
for i in tqdm(range(len(quote))):    
    quote_text=quote[i].find_element_by_class_name("text")
    quote_author=quote[i].find_element_by_class_name("author")
    temp=[]
    temp.append(quote_text.text)
    temp.append(quote_author.text)
    quote_content.append(temp)
write_csv(quote_head,quote_content,quote_path)

结果

四,Selenium:requests+Selenum爬取京东物品

代码

from selenium import webdriver
import time
import csv
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
#加载页面
driver.get("https://www.jd.com/")
time.sleep(3)

#定义存放图书信息的列表
goods_info_list=[]
#爬取200本
goods_num=200
#定义表头
goods_head=['价格','名字','链接']
#csv文件的路径和名字
goods_path='C:\Users\hp\Desktop\pachong2.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)
五,实验结果

实验结果视频上传到了哔哩哔哩,网址是https://www.bilibili.com/video/BV1ta411r79R/

python爬取名言和商品信息

六,总结

和静态网页一样查看网页结构,找到元素id或者利用相关函数得到元素,然后将信息获取,存储,差别不是很大

七,参考

动态网页爬虫

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5670381.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存