关于用request,结合Beautifulsuop进行页面数据的爬取。
最近在学习爬虫的过程中,学习到了Beautifulsuop的使用,这个包非常强大,如果你对前端的页面不是很熟悉,没关系他可以帮你找出页面中想要的标签,话不多说了上代码。
下面介绍的是爬取:菜鸟教程python3教程 的代码:
下面展示一些 内联代码片
。
import requests,re
from bs4 import BeautifulSoup
def get_html():
url='https://www.runoob.com/python3/python3-tutorial.html'
html_data=requests.get(url)
html_data.encoding='utf-8'
html=BeautifulSoup(html_data.text,"html.parser")#将页面解释成对象
# print(html)
for a in html.find_all('a',href=re.compile('^/python3/python3-')):
link_list='https://www.runoob.com/'+ a.get('href')
yield link_list
for b in html.find_all('a',href=re.compile('^/python3/python')):
link_list1='https://www.runoob.com/'+ b.get('href')
yield link_list1
这里使用BeautifulSoup的时候大家可能会一个问题,下面的代码里面不知道怎么填写,
html=BeautifulSoup(html_data.text,"?")
我们可以先不加上去,运行代码,在调试窗口找报红的提示:
上面的这个函数只是获取到页面点击的每个路由而已。
我们还需要再加一个函数,进行路由下面每个详细页面数据的获取:
def get_link_html(link_html): # 获取详细页面
a = 0
for i in link_html:
html = requests.get(i)
html.encoding = 'utf-8'
html = BeautifulSoup(html.text, "html.parser")
header = html.find('div', id='leftcolumn').find_all('a') # 找出所以页面的标题
print("当前打印的标题:%s" % (header[a].text))
content = html.find('div', id='content').find_all('p') # 找出页面的内容展示
print("内容简介:%s" % (content[0].text))
a += 1
if a >= len(header):
break
url_html = get_html()
get_link_html(url_html)
下面就是代码运行展示:
这里使用了Beautifulsoup里面的find()、find_all(),能够准确的找到页面中标签的内容,可以说是非常强大的,我们可以通过查找自己想要的内容进行输出,从而获取页面的数据,也可以将输出的内容保存下来,这一步没有弄,下次再跟大家分享啦。