您的当前位置:首页正文

BeautifulSoup爬取考研词汇

2024-11-30 来源:个人技术集锦

BeautifulSoup爬取考研词汇

1.网页源代码分析

2.直接上代码

# -*- encoding:utf-8 -*-
import urllib.request          # 导入urllib库的request模块
from bs4 import BeautifulSoup  
import lxml                    #文档解析器
import os                      #os模块就是对操作系统进行操作
import numpy as np       #列表、字典、字符串等中计算元素重复的次数
 
urls=[]
titles=[]
#爬取所有新闻的url和标题,存储在urls和titles中,这里range(1)表示只爬取1页。   
for i in range(1):
    url='https://kaoyan.koolearn.com/20180428/1010928.html'
    res = urllib.request.urlopen(url)  #调用urlopen()从服务器获取网页响应(respone),其返回的响应是一个实例
    html = res.read().decode('utf-8')  #调用返回响应示例中的read(),可以读取html
    soup = BeautifulSoup(html, 'lxml')
    result = soup.find_all('div',attrs={'class':'xqy_core_text'})
download_soup = BeautifulSoup(str(result), 'lxml')
urls=[]
url_all = download_soup.find_all('a')
for a_url in url_all:
    a_title=a_url.get_text('target')
    if "考研英语5500词背诵" in a_title:
        urls.append(a_url.get('href'))
len(urls)
words=""
for i in urls:
    print(i)
    res = urllib.request.urlopen(i)  
    html = res.read().decode('utf-8') 
    soup = BeautifulSoup(html, 'lxml')
    result = soup.find_all('div',attrs={'class':"xqy_core_text"})
    download_soup = BeautifulSoup(str(result), 'lxml')
    lp = download_soup.find_all('p',attrs={'style':"white-space: normal;"})
    for p in lp:
        t = p.get_text()
        words+=t

#定义txt存储路径。
picpath='./newws3/'#这里我用的是本程序路径,也可改为c盘或d盘等路径。
def txt(name, text):  # 定义函数名
    if not os.path.exists(picpath):  # 路径不存在时创建一个
        os.makedirs(picpath)
    savepath = picpath + name + '.txt'
    file = open(savepath, 'a', encoding='utf-8')#因为一个网页里有多个标签p,所以用'a'添加模式
    file.write(text)
    file.close
txt("考研词汇5500",words)

3.结果

显示全文