栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 爬虫

基础入门的方法,有些网站不适用,有的获取不到图片,有的获取的文字会加入换行,需要自行测试。

抓取页面的信息 

 导库
#导库
import selenium  #爬虫常用的库
from selenium import webdriver  #调用selenium中的webdriver,浏览器驱动
from selenium.webdriver.common.by import By #调用selenium 的By函数
from lxml import etree #获取网页数据的包
import pandas as pd

注意:1-如果没有相关库需要先安装

!pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

2-会用到浏览器驱动,最好使用谷歌浏览器,下载和自己浏览器版本相同驱动器(下载地址:ChromeDriver - WebDriver for Chrome - Downloads),最好将下载好的驱动与代码文件放在同一个文件夹下,不然的话使用驱动时注意使用绝对路径。

定义一个browser用于打开指定网页获取数据
#定义一个browser,用于打开网页
browser=webdriver.Chrome('./chromedriver.exe')
#如果驱动没有在同一文件夹下,注意使用绝对地址
打开页面
#打开网页,这里用了一个input 方便输入地址
link1=input("请输入地址")
browser.get(link1)
#获取网页源码
html=etree.HTML(browser.page_source)
获取信息找出规律

F12查看网页源码,找到信息,copy xpath 或者 copy fullxpath

查看多个标题信息之间的规律

观察不同的变量,将数字变量去掉,用函数进行解析,可以获取到当前页的所有标题信息

#/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div[4]/div/div[1]/a[1]
title_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/a[1]/text()")

                     #/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div[5]/img
pic_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/img/@src")

                     #/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div[3]/div/div[1]/div
writer_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/div/text()")

                         #/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div[4]/div/div[1]/a[2]
jianjie_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/a[2]/text()")

                         #/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div[5]/div/div[2]/span[1]/em
price_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[2]/span[1]/em/text()")

将获取到的信息拼成Dataframe,方便导出为excel

#定义为字典,再将字典转换为dataframe
info_dict={
    "书名":title_list,
    "作者":writer_list,
    "简介":jianjie_list,
    "价格":price_list,
    "封面":pic_list
}

#转换为dataframe
book_info=pd.DataFrame(info_dict)

#导出为excel,默认跟代码文件在同一个文件夹里
book_info.to_excel("书籍介绍.xlsx",index=False)

以上为获取单一页面的步骤,如果页面有分页,即可以通过for循环,自动翻页获取各个页面的书籍信息,需要将各个页面的链接规律找出来,循环执行上方的代码即可

#找出页面规律
#第一页:https://download.csdn.net/list/topic/100-0-0-0-2-1.html
#第二页:https://download.csdn.net/list/topic/100-0-0-0-2-2.html
#第六页:https://download.csdn.net/list/topic/100-0-0-0-2-6.html
#发现链接里最后一个数字参数不同,通过for循环打开不同的页面获取信息

book_all=pd.DataFrame()

for i in range(7):
    #打开网页
    browser.get(f"https://download.csdn.net/list/topic/100-0-0-0-2-{i}.html")
    #获取网页源码
    html=etree.HTML(browser.page_source)
    
                    title_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/a[1]/text()")
    pic_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/img/@src")
    writer_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/div/text()")
    jianjie_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/a[2]/text()")
    price_list=html.xpath("/html/body/div[2]/div/div[1]/div/div/div[1]/div[3]/div/div/div[2]/span[1]/em/text()")
    
    info_dict={
    "书名":title_list,
    "作者":writer_list,
    "简介":jianjie_list,
    "价格":price_list,
    "封面":pic_list}
    book_info=pd.DataFrame(info_dict)
    
    #将每一页获取的信息拼接到总表中
    book_all=book_all.append(book_info,ignore_index=True) 

#将总表导出来   
book_all.to_excel("书籍介绍.xlsx",index=False)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号