【整理】爬取网页数据的方法汇总

网页爬取方法汇总:

案例:爬取豆瓣电影Top 250的列表(电影名称、导演、主演、星级等信息)

浏览器console

操作:浏览器内鼠标右键 —> “检查”(不同的浏览器名称可能不一样,此处使用了Google)—> Elements :查看网页结构 —> Console : 输入指令

【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
var i = 0;
var hd = document.querySelectorAll("div.hd > a");
var bd = document.querySelectorAll("div.bd > p");
var star = document.querySelectorAll("div.bd > div.star > span.rating_num");
var quote = document.querySelectorAll("div.bd > p.quote > span.inq");
for(var t of document.querySelectorAll("ol.grid_view > li > div.item > div.info"))
    {
        console.log(hd[i].href);
        console.log(hd[i].text);
        console.log(bd[i].innerHTML);
        console.log(star[i].innerHTML);
        console.log(quote[i].innerHTML);
        i=i+1;
    }

常用命令(点击链接查看示例):

方法描述
getElementsByClassName()

返回文档中所有指定类名 ” class= ” 的元素集合
document.getElementById()

返回对拥有指定 id 的第一个对象 ” id= ” 的引用
document.getElementsByName()

返回带有指定名称 ” name= ” 的对象集合
getElementsByTagName()

返回带有指定标签名的所有对象集合,如”div”、”p”,无法指定类名id等
document.querySelectorAll()

返回文档中匹配的CSS选择器的所有元素节点列表,可以获取指定类名、属性的元素

评价
优点:有浏览器就可以操作,不需要下载软件,不需要部署环境,学习成本不算很高
缺点:当采集任务复杂时,需要增加学习成本的投入;采集数据的格式可能不规整需要进一步处理

参考资料
HTML DOM Document 对象
怎么批量提取一个网页里面的链接? – 喂鸭梨的回答 – 知乎

浏览器插件

推荐几个安装浏览器插件的网站:(懒得把网址从吃灰的收藏夹翻出来了,再说吧 = V =)

· Web Scraper

操作
(1)将浏览器”检查”窗口调整为”位于底部”的布局,创建一个新的Web Scraper项目

【整理】爬取网页数据的方法汇总

【整理】爬取网页数据的方法汇总

(2)填写爬虫项目信息

【整理】爬取网页数据的方法汇总
(3)建立选择器,选择需要采集的网页元素
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总

; 在线网页爬取工具

目前几款在线网页爬取工具使用的不是很多,后续再补充使用体验

八爪鱼软件

当页面较 整齐有规律时,八爪鱼是个相当不错的选择!只需要输入网址,软件就可以自动识别网页(还提供了翻页),选择需要采集的元素进行采集即可,具体操作见官网教程 八爪鱼采集器官网

但是如果网页布局较复杂,或是有特别的采集需求时,就需要投入一定的学习成本才能完成采集任务。

【整理】爬取网页数据的方法汇总

; Python

(1)构建UA代理,发送请求,获得响应并解码HTML页面

from urllib import request
from lxml import etree

url = 'https://movie.douban.com/top250'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}

req = request.Request(url = url , headers = headers)

response = request.urlopen(req)

html = response.read().decode('utf-8')

(2)确定要采集的网页元素,获取各元素的xpath

【整理】爬取网页数据的方法汇总
【整理】爬取网页数据的方法汇总
page = etree.HTML(html)
movie_list = page.xpath('//*[@id="content"]/div/div[1]/ol/li')
file = pd.DataFrame(columns = ['title','detail','type','star','quote'])
i = 0

for m in movie_list:
    title_list = m.xpath('//li/div/div[2]/div[1]/a/span[1]/text()')
    file.loc[i,'title']=title_list[i].replace("\xa0", "").replace('\n','') if title_list else None

    detail_list = m.xpath('//li/div/div[2]/div[2]/p[1]/text()')
    file.loc[i,'detail']=detail_list[i].replace("\xa0", "").replace('\n','') if detail_list else None

    type_list = m.xpath('//li/div/div[2]/div[2]/p[1]/text()[2]')
    file.loc[i,'type']=type_list[i].replace("\xa0", "").replace('\n','') if type_list else None

    star_list = m.xpath('//li/div/div[2]/div[2]/div/span[2]/text()')
    file.loc[i,'star']=star_list[i] if star_list else None

    quote_list = m.xpath('//li/div/div[2]/div[2]/p[2]/span/text()')
    file.loc[i,'quote']=quote_list[i] if quote_list else None

    i = i+1

file

输出结果:

【整理】爬取网页数据的方法汇总

参考资料
C语言中文网 – Python爬虫教程

Original: https://blog.csdn.net/qq_37785938/article/details/125534124
Author: 渫渫不在乎
Title: 【整理】爬取网页数据的方法汇总

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/728662/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球