Python网络爬虫-BS4、re(2)
BS4 - Beautiful Soup 主要用于从网页中抓取数据。使用BS4前,需要在python安装该库,这里不展开了。
Beautiful Soup库能够轻松解析网页信息,它被集成在bs4库中,需要时可以从bs4库中调用。其表达语句如下。
代码运行结果如下:
注:首先,HTML文档将被转换成Unicode编码格式,然后Beautiful Soup选择最合适的解析器来解析这个文档,此处指定lxml库进行解析。解析后便将复杂的HTML文档转换成树形结构,并且每个节点都是Python对象。这里将解析后的文档存储到新建的变量soup中,代码如下。
soup = BeautifulSoup(strhtml.text,'lxml')
至此,我们获得了一段HTML代码,但是还是没有把数据提取出来,接下来在pycharm中输入以下代码。
for item in data:
result = {
'title':item.get_text(),
'link':item.get('href')
}
print(result)
2 正则表达式
需要使用的正则符号如下:
- \d:匹配数字
- +:匹配前一个字符一次或多次
在Python中调用正则表达式时使用re库,这个库不用安装,可以直接调用。
for item in data:
result = {
'title':item.get_text(),
'link':item.get('href')
'ID':re.findall('\d+',item.get('href'))
}
print(result)
这里使用re库的findall()方法,第一个参数表示正则表达式,第二个参数表示要提取的文本。
3 代理ip
爬虫是模拟人的浏览访问行为,进行数据的批量抓取。如果抓取数据量过大,就会对服务器造成压力,甚至可能会崩溃。换句话说,服务器是不喜欢有人抓取自己的数据的。那么网站方面就会针对这些爬虫者采取一些反爬策略。
通常解决方法有两种,一是增设延时,三秒钟抓一次,代码如下:
import time
time.sleep(3)
另外一种就是构建代理池,代码如下:
proxies = {
"http":"http://10.10.1.10:3128",
"http":"http://10.10.1.10:1080",
}
response = requests.get(url,proxies = proxies)
今天就先到这儿,明儿我们来试试爬网易云的评论!
转载自:https://juejin.cn/post/7025767335843594270