likes
comments
collection
share

Python网络爬虫-BS4、re(2)

作者站长头像
站长
· 阅读数 31

BS4 - Beautiful Soup 主要用于从网页中抓取数据。使用BS4前,需要在python安装该库,这里不展开了。

Beautiful Soup库能够轻松解析网页信息,它被集成在bs4库中,需要时可以从bs4库中调用。其表达语句如下。

代码运行结果如下:

Python网络爬虫-BS4、re(2)

注:首先,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)

Python网络爬虫-BS4、re(2)

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
评论
请登录