一、网页分析
这次我们选择爬取的网站是水木社区的Python页面
网页:https://www.mys本文来源[email protected]搞@^&代*@码2网mth.net/nForum/#!board/Python?p=1
根据惯例,我们第一步还是分析一下页面结构和翻页时的请求。
通过前三页的链接分析后得知,每一页链接中最后的参数是页数,我们修改它即可得到其他页面的数据。
再来分析一下,我们需要获取帖子的链接就在id 为 body 的 section下,然后一层一层找到里面的 table,我们就能遍历这些链接的标题。
我们点开一篇帖子:https://www.mysmth.net/nForum/#!article/Python/162717
和前面一样,我们先分析标题和内容在网页中的结构
不难发现,主题部分只要找到 id 为 main 的 section 下面的 class 为 b-head corner 的下面第二个 span即可
主题部分
而内容部分只要找到class 为 a-wrap corner 的 div,找到下面的 a-content即可。
内容部分
分析网页结构后,我们就可以开始写代码了!
二、代码实现
首先要确定要保存什么内容:这次我们保存水木社区 Python 版面前 10 页的所有帖子标题和帖子第一页的所有回复。
解析列表页,得到所有的帖子链接
from bs4 import BeautifulSoup # 解析列表页内容,得到这一页的内容链接 def parse_list_page(text): soup = BeautifulSoup(text, 'html.parser') # 下面相当于 soup.find('table', class_='board-list tiz').find('tbody') tbody = soup.find('table', class_='board-list tiz').tbody urls = [] for tr in tbody: td = tr.find('td', class_='title_9') urls.append(td.a.attrs['href']) return urls