接着上篇文章,为了爬取所有链接,需要获得某一天的所有版面链接。
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def get_html(html_url):
'''获取html文本'''
res = requests.get(html_url)
res.encoding = "utf-8" # 以utf-8的编码格式来解析网页
return res.text
def get_layout_urls(dly_url):
bs = BeautifulSoup(get_html(dly_url), "html.parser")
a_list = bs.find_all(id="pageLink")
# print(a_list)
return [urljoin(dly_url,s['href']) for s in a_list]
layout_urls = get_layout_urls(r'http://paper.people.com.cn/rmrb/html/2020-08/02/nbs.D110000renmrb_01.htm')
for u in layout_urls:
print(u)
输出结果:
http://paper.people.com.cn/rmrb/html/2020-08/02/nbs.D110000renmrb_01.htm
http://paper.people.com.cn/rmrb/html/2020-08/02/nbs.D110000renmrb_02.htm
http://paper.people.com.cn/rmrb/html/2020-08/02/nbs.D110000renmrb_03.htm
……
今天学了一个新的函数:urljoin, 这个函数用起来挺方面的,可以自动的把两个链接合并成绝对路径,写爬虫时应该会有用,也经常用得上。
至此,我爬取人民日报的文章差不多快结束了,明天可以完成所有的爬取代码。