本系列博客将分为以下几篇:
- 001、python爬取主页,获取最新文章列表
- 010、python爬取文章列表,归档为本地文件
- 011、python实现数据清洗,过滤出每篇文章中有一定难度的单词
- 100、python分别从有道、必应爬取每篇文章中一定难度单词的发音、解释、短语、例句等信息,首选有道,有道失败必应上,实在不行调用扇贝查词API
- 101、根据文章,以及爬取的对应单词解析文件,生成最终可供请求的json文件
- 110、前端逻辑简单梳理
先上一下最新的视觉:
带有info标记的单词就是过滤出的有难度的单词,点击即可查看翻译、发音、例句、短语等。
00、python爬取主页,获取最新文章列表
1、分析要爬取的网页结构,注意不要在浏览器中直接访问,因为直接访问的文档结构可能是被javascript经过DOM操作改变过的,要将爬取的内容保存为html文件然后在浏览器中打开进行分析
import re
import urllib.request
from lxml import etree
headers = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',}
url = 'https://economist.com'
def getLatestPapers(url):
req = urllib.request.Request(url=url,headers=headers, method='GET')
response = urllib.request.urlopen(req)
html = response.read()
with open('economist.html','wb')as fe:
fe.write(html)
保存下来后打开网页进行检查:
2、根据分析结果构造路径:
papersPath='/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/main[1]/div[1]/div[1]/div[1]/div[3]/ul[1]/li'
根据以上规则进行选择就能获取一个内容列表了
3、提取每篇文章的链接以及标题
art=selector.xpath(papersPath)
awithtext = []
try:
for li in art:
h3 = li.xpath('article[1]/a[1]/div[1]/h3[1]/text()')#获取标题
alink = li.xpath('article[1]/a[1]/@href')#获取链接
awithtext.append([alink [0],h3[0]])#构造一个二维列表,每个item包含链接以及对应的标题,这样我们就有了要进一步爬取的目标了
except Exception as err:
print(err)
finally:
return awithtext
此篇OVER,请扫码进入阅时即查体验模式: