我使用的是pycharm,使用爬虫前记得先把需要的库安装下来,具体网上有教程。
然后介绍一下我们要使用到的库。
import requests
#爬虫
import re
#re模块,用于使用正则表达式
from lxml import etree
#xpath方法
爬虫做了啥
首先我们了解一下我们平时看到的网络页面是怎么来的,有这样几种情况。
第一,服务器渲染:服务器统一把html和数据返回给浏览器
第二,客服端渲染:浏览器向服务器请求网页,服务器返回给一个html骨架,浏览器再向服务器请求数据,服务器再把数据返回给浏览器
然后所谓的爬虫就是机器代替人去浏览页面获取数据,因为人处理庞大的工作量是费时的,而机器很快。
我们打开页面是给浏览器一个网址,那么我们也要给python一个网址让它打开。这个网络地址就是url。导入request库后,可以用request.get(url)或者request.post(url)来向服务器发起请求,让它返回包给python。使用get还是post或者其他方法要看这个网页用的是什么请求。按F12可以打开浏览器抓包工具,在net下面找到url,下面就有它使用的请求。
返回得到页面源代码后,可以找你要的东西了。
分析页面源代码,使用xpath或是正则表达式,获取页面内你要的图片、超链接或是文本。
下面介绍一下re和xpath
re
re的函数:
re.match(正则表达式, 字符串,标志位) --只匹配字符串的开始,不符合正则直接匹配失败
re.search --匹配整个字符串,直到找到一个匹配,否则匹配失败
re.findall --找到自负床所匹配的左右字符串,返回列表
re.compile --编译正则表达式,形成一个对象
re.finditer --跟findall差不多,但返回迭代器
re.sub(pattern,repl,string,count=0,flags=0) --将匹配到的数据替换
re.subn --跟sub差不多,但返回元组
re.split --切割字符串,返回列表
标志位:
- re.I 忽略大小写
- re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
- re.M 多行模式
- re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
- re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
- re.X 为了增加可读性,忽略空格和 # 后面的注释
xpath
xpath对比正则的优势在于xpath只用数标签即可获取内容
et = etree.HTML("xxx.html")
result = et.xpath("/xx/xx/xx")
/a获取超链接
/text()获取文本