沪江网考研词汇爬取

这个呢是寒假小任务的一部分,在寒假的最后一天才完成一部分也是有点失败。。。
这个的思路和上一篇爬取图片的思路大致一样都是先从大页面获取小页面的链接,然后再进行信息获取,不过这次遇到了一个小坑点。
首先还是先分析页面的源代码找到每个单词的链接,如图:

如图
标签a href=" "中的内容就是我们点开每一个单词的链接。我们要用正则表达式获取他。

然后进入单词的链接,获取我们需要的信息。
如图:
如图
现在我们可以在源代码中找到我们需要的信息(汉语意思),这些我们可以用BeautifulSoup的select方法解决。

而这次的坑点就是当我们用select(soup.select(‘div.sp-lexicon-word-comment clearfix’))提取信息时会发现我们提取的列表一直是空的,也就是提取不到。这是因为comment clearfix之间空格无法识别,我们用 '.'替换就好了。soup.select(‘div.sp-lexicon-word-comment.clearfix’)
这是我的朋友告诉我的,大家可以搜索工程小先锋或者戳下面的这个链接来查看这位大佬的博客
https://blog.csdn.net/qq_43391383?t=1

现在就是我们开代码的时间了!!!!!
代码呈上:

import requests
from bs4 import BeautifulSoup
import re

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36"
}
def get_HTML(url):
    #获取页面信息
    try:
        r = requests.get(url, headers = headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

def copy_url(html):
    #获得页面中单词链接
    words_url = re.findall('<li class="clearfix">.*?<a href="(.*?)" target="_blank">',html,re.S)
    return words_url

def dowload_url(html,word_name):
    #获取单词页面的汉语意思并保存
    soup = BeautifulSoup(html,"html.parser")
    word_list = soup.select('div.sp-lexicon-word-comment.clearfix')
    for word in word_list:
        with open("F:/四级单词/{}.txt".format(word_name),"a+",encoding = "UTF-8") as f:
            f.write(word.get_text())


if __name__ == "__main__":
    urls = ["https://www.hujiang.com/ciku/zuixinkaoyanyingyucihui_{0}/".format(i) for i in range(1,276)]
    for url in urls:
        html = get_HTML(url)
        words_url = copy_url(html)
        for word_url in words_url:
            new_url = "https://www.hujiang.com" + word_url
            word_name = word_url.split("/")[2]
            word_html = get_HTML(new_url)
            dowload_url(word_html,word_name)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值