引言

暑假在家接到了一个重任,负责辅导表弟的英语。表弟刚上完初一,英语基础很差,所以笔者打算找点英语阅读给他做做,顺便记点儿单词。然而手动复制粘贴题目实在是太麻烦了,正好笔者最近在学习用python做爬虫,便萌发了用python爬取网站上的英语题目的想法。

准备

  • python环境

  • 一个题库网站

    分析网站

先访问一下目标站点,按F12打开开发者工具2022-07-27T07:36:43.png可以看到每个题目下面都有一个链接,我们要做的就是找到这个链接,并使用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上的项目