网络爬虫常用方法
Python作为最易上手的编程语言之一,在很多领域的应用已经相对成熟,尤其是一些工具应用类的场景,比如本文要介绍的网络爬虫。网络爬虫目前比较成熟的方法有三种,在Python中都有现有打包好的包/库,直接调用,非常方便。本篇博客只关注网络爬虫的应用层面,重点放在如何解决实际问题,所以对三种方法的理论介绍不做过多描述。
- BeautifulSoup
- XPath
- lxml
BeautifulSoup
Python中的一个HTML/XML的解析库,可以很方便地从网页中提取数据,自动将输入文档换成Unicode编码,输出文档转化成UTF-8编码。
导包
from bs4 import BeautifulSoup
转化本地文件
XXX = BeautifulSoup(open('本地文件'),'lxml')
转化网络文件
XXX = BeautifulSoup('字符串类型或者字节类型','lxml')
打印XXX对象显示出来的就是html文件中的内容
XPath
Python中一款高性能 HTML/XML 解析器,利用XPath可以快速定位特定元素,获取节点信息。
导包
from lxml import etree
解析语法方式1
XXX = etree.HTML('index.html')
解析语法方式2
XXX = etree.parse('index.html')
XPath通配符
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
lxml
也是Python中一个常用的 HTML/XML 解析器,可以跟XPath联合使用。
相关介绍参见XPath与lxml库介绍及爬虫案例。
案例
之前在某厂实习,偶尔需要爬一下一些电影在豆瓣上的相关信息,通常这些电影的豆瓣ID都是已知的,就以这个为例吧。直接附上代码,思路比较清晰,有点基础的人应该都可以看懂,实在不懂也可以直接copy过去使用。后续会不定期更新一些视频业务线可能会用到的爬虫小案例,比如一些视频网站上视频信息爬取、评论爬取、用户信息爬取等等吧,同样可直接copy使用。如果有类似需求,可以在评论区回复需求,我会定期整理发出来。
这个案例中关注的电影豆瓣信息包括链接、片名、导演、演员、类型、地区、上映日期、别名、豆瓣评分、评分人数、介绍,如果还需要别的信息,可以自行完善代码,也可在评论区补充需求,我定期完善更新。
代码
该例中用的是BeautifulSoup方法。使用其他方法结构都是类似的,只是解析方法不同,可以自行修改。
# 已知豆瓣ID时,爬取影片基本信息
# 把已知的豆瓣ID存到项目文件中的'dubanIDs.xlsx'文件中即可,程序运行时自动导入该文件
import random
import numpy as np
from bs4 import BeautifulSoup #解析包
import requests #请求包
import pandas as pd
import json
import time # 可用于设置休眠时间,控制爬虫频率
from threading import Thread
User_Agents =[
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X