加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
第二章作业2.py 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
王涛 提交于 2020-05-26 23:06 . py27期-珠海-王涛-第五周作业
import urllib.request as ur
import lxml.etree as le
import re
url = 'https://so.csdn.net/so/search/s.do?p={page}&q={keyword}&t=blog&viparticle=&domain=&o=&s=&u=&l=&f=&rbg=0'
# 得到response的方法
def getResponse(url):
req = ur.Request(
url = url,
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
)
response = ur.urlopen(req).read()
return response
if __name__ == '__main__':
keyword = input('关键字:')
pn_start = int(input('起始页:'))
pn_end = int(input('终止页:'))
# 遍历起始页到终止页
for page in range(pn_start,pn_end+1):
# 访问一级页面
response = getResponse(
url='https://so.csdn.net/so/search/s.do?p={page}&q={keyword}&t=blog&viparticle=&domain=&o=&s=&u=&l=&f=&rbg=0'.format(
page=page, keyword=keyword)
)
# 访问二级页面,博客的链接
hrefs = le.HTML(response).xpath('//div[@class="search-list-con"]/dl//span[@class="mr16"]/../../dt/div/a[1]/@href')
# 遍历博客链接
for href in hrefs:
response_blog = getResponse(
url = href,
)
title = le.HTML(response_blog).xpath('//h1[@class="title-article"]/text()')[0]
# pass
title = re.sub(
r'[/\\:*"<>|?]', '', title
)
filepath = 'blog/%s.html'%title
with open(filepath,'wb') as f:
f.write(response_blog)
print(title)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化