引言
暑假在家接到了一个重任,负责辅导表弟的英语。表弟刚上完初一,英语基础很差,所以笔者打算找点英语阅读给他做做,顺便记点儿单词。然而手动复制粘贴题目实在是太麻烦了,正好笔者最近在学习用python做爬虫,便萌发了用python爬取网站上的英语题目的想法。
准备
先访问一下目标站点,按F12打开开发者工具
可以看到每个题目下面都有一个链接,我们要做的就是找到这个链接,并使用xpath访问其中的内容,然后输出到我们自己的文件中。
代码实现
获取每个题目的页面 文件getindex
import requests
from lxml import etree
import re
def getindex(nj, km, tx, nd):
index = {}
url = 'https://www.xintiku.com/kaoti/nianji_'+nj+'-kemu_'+km+'-tixing_'+tx+'-nandu_'+nd+'/'
response = requests.get(url)
selector = etree.HTML(response.text)
li = selector.xpath('/html/body/section[3]/div[2]/ul/li')
licount = len(li)
for i in range(1,licount+1):
xp = '/html/body/section[3]/div[2]/ul/li[%d]/p[@class="footnote"]/a/@href' % i
inurl = selector.xpath(xp)
for item in inurl:
if item == []:
break
else:
index[i-1] = item
return index
对页面特定信息进行爬取并存储 文件spiderr
import requests
from bs4 import BeautifulSoup
def spider(index):
indexlen = len(index)
for i in range(0,indexlen):
response = requests.get(index[i])
soup = BeautifulSoup(response.content, 'html5lib')
inf= soup.find('div', class_="test-details")
info = inf.find_all('p')
name = '%d.txt' % i
f = open(name,'w', encoding="utf-8")
for items in info:
f.write(items.text)
f.close
texxt = '%d has been got' % i
print(texxt)
运行 文件main
from getindex import getindex
from spider import spider
index = getindex('chuyi', 'yingyu', '5', '2')
spider(index)
写在最后
最后放一下我在GitHub上的项目
可以看到每个题目下面都有一个链接,我们要做的就是找到这个链接,并使用xpath访问其中的内容,然后输出到我们自己的文件中。
