扇贝网单词爬取

对于一个英语是硬伤的我来说,就只能老老实实的记单词咯。
然后就有了目标地址:扇贝 程序员必学电脑计算机专业英语词汇1700词

环境:Python3.5
模块:BeautifulSoup4, requests
思路:

1.通过主页面的 地址 进入把需要用到的12个链接爬到手
扇贝1

2.然后打开每个链接(一个示例地址),把里面的单词和汉语翻译爬取下来
扇贝2

3.最后把获取的单词和汉语翻译下载到本地文本

代码示例

引入相关包,requests下载html页面

import requests
from bs4 import BeautifulSoup
import random

items = [] # 需要下载的字段
links = [] # 要使用的地址

def get_html(url):
    headers = {
        'User-Agent': get_user_agent() # 获取随机User-Agent
    }
    proxies = {
        'https': 'https://114.115.218.71'
    }
    # 此项目不需User-Agent和代理,但为了笔记的完整性写上了
    try:
        r = requests.get(url, headers=headers, proxies=proxies, timeout=5)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return 'error'

通过get_html()下载页面后解析页面信息

def get_info(url):
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    table = soup.find_all('tr', class_='row')

    for td in table:
        item = {} # 定义一个字典存放字段
        item['word'] = td.find('td',class_='span2').find('strong').text
        item['translate'] = ''.join(td.find('td', class_='span10').text.split('\n'))
       items.append(item) # 添加到列表中

由主链接获取相关链接,然后迭代调用get_info()

def get_links(url):
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    td = soup.find_all('td', class_='wordbook-wordlist-name')
    for a in td:
        link = a.find('a')['href']
        for i in range(1,11):
            links.append('https://www.shanbay.com' + link + '?page=' + str(i))

    for link in links:
        get_info(link)

把解析的内容下载到本地

def down_info():
    with open('./word.txt', 'w') as f:
        for item in items:
            f.write(item['word'] + '\n' + item['translate'] + '\n\n')
        print('Download finished!\n共{}个'.format(len(items)))

看一下下载到本地的内容

扇贝3

最后贴一下源码地址程序员必学电脑计算机专业英语词汇1700词

本文总阅读量