ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BeautifulSoup4的find_all()和select(),简单爬虫学习

2019-11-03 14:00:55  阅读:434  来源: 互联网

标签:index forumpark 娱乐 href 明星 BeautifulSoup4 pn find select


正则表达式+BeautifulSoup爬取网页可事半功倍。

就拿百度贴吧网址来练练手:https://tieba.baidu.com/index.html

 

1.find_all():搜索当前节点的所有子节点,孙子节点。

下面例子是用find_all()匹配贴吧分类模块,href链接中带有“娱乐”两字的链接。

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

f = urlopen('https://tieba.baidu.com/index.html').read()
soup = BeautifulSoup(f,'html.parser')

for link in soup.find_all('a',href=re.compile('娱乐')):
    print(link.get('title')+':'+link.get('href'))
结果:
娱乐明星:/f/index/forumpark?pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
港台东南亚明星:/f/index/forumpark?cn=港台东南亚明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
内地明星:/f/index/forumpark?cn=内地明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
韩国明星:/f/index/forumpark?cn=韩国明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
日本明星:/f/index/forumpark?cn=日本明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
时尚人物:/f/index/forumpark?cn=时尚人物&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
欧美明星:/f/index/forumpark?cn=欧美明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
主持人:/f/index/forumpark?cn=主持人&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
其他娱乐明星:/f/index/forumpark?cn=其他娱乐明星&ci=0&pcn=娱乐明星&pci=0&ct=1&rn=20&pn=1
soup.find_all('a',href=re.compile('娱乐')) 等效于:soup('a',href=re.compile('娱乐'))
上面的例子也可以用soup代替。

2.用select()循环你需要的内容:

** 搜索html页面中a标签下以“/f/index”开头的href:

for link2 in soup.select('a[href^="/f/index"]'):
    print(link2.get('title')+':'+link2.get('href'))

**搜索html页面中a标签下以“&pn=1”结尾的href:
for link2 in soup.select('a[href$="&pn=1"]'):
    print(link2.get('title')+':'+link2.get('href'))

**搜索html页面中a标签下包含“娱乐”的href:
for link3 in soup.select('a[href*="娱乐"]'):
    print(link3.get('title')+':'+link3.get('href'))

 

标签:index,forumpark,娱乐,href,明星,BeautifulSoup4,pn,find,select
来源: https://www.cnblogs.com/suancaipaofan/p/11786046.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有