Python-数据挖掘-请求与响应
https://tieba.baidu.com/f?kw=爬虫&ie=utf-8&pn=200
https://tieba.baidu.com/f? 是基础部分,问号后面的 “kw=爬虫&ie=utf-8&pn=200”是参数部分。参数部分的“爬虫”是搜索的关键字,pn 值与贴吧的页码有关。如果 n 表示第几页,那么 pn 参数的值是按照 (n-1) * 50 的规律进行赋值。
百度贴吧中的爬虫吧,前三页对应的 URL 地址:
https://tieba.baidu.com/f?kw=爬虫&ie=utf-8&pn=0
https://tieba.baidu.com/f?kw=爬虫&ie=utf-8&pn=50
https://tieba.baidu.com/f?kw=爬虫&ie=utf-8&pn=100
使用 urllib 库来爬取爬虫贴吧第1~3页的内容,并将爬取到的内容保存到文件中。
① 提示用户输入要爬取的爬取名,以及要查询的起始页和结束页。然后,使用 urllib.parse.urlencode() 对 url 参数进行转码,组合成一个完整的可访问的 URL。
if __name__== "__main__":
kw = input("请输入要爬取的贴吧名:")
begin_page = int(input("请输入起始页:"))
end_page = int(input("请输入结束页:"))
url = "https://tieba.baidu.com/f?"
key = urllib.parse.urlencode({"kw": kw})
url = url + key
tieba_spider(url, begin_page, end_page)
② 用于爬取百度贴吧的函数,该函数需要传递3个参数,分别是 URL 地址,表示爬取页码范围的起始页码和终止页码。
def tieba_spider(url, begin_page, end_page):
for page in range(begin_page, end_page + 1):
pn = (page - 1) * 50
file_name = "第" + str(page) + "页.html"
full_url = url + "&pn=" + str(pn)
html = load_page(full_url, file_name)
write_page(html, file_name)
待续~