爬取5500个考研单词
# -*- encoding:utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
import os
import lxml #文档解析器 #os模块就是对操作系统进行操作
import numpy as np
urls=[]
titles=[]
#url = r'http://sousuo.gov.cn/s.htm?t=paper&n=10&p=0&advance=false&n=&timetype=&mintime=&maxtime=&sort=&q=%E6%88%BF%E5%9C%B0%E4%BA%A7&us=2'
url = r'http://blog.csdn.net/a1456123a/article/list/7?t=1'+word
#指定要抓取的网页url,必须以http开头
res = urllib.request.urlopen(url)
#调用urlopen()从服务器获取网页响应(respone),其返回的响应是一个实例
html = res.read().decode('utf-8')
#调用返回响应示例中的read(),可以读取html
soup = BeautifulSoup(html, 'lxml')
result = soup.find_all('div',class_ = 'result')
#使用查询结果再创建一个BeautifulSoup对象,对其继续进行解析
download_soup = BeautifulSoup(str(result), 'lxml')
url_all = download_soup.find_all('a')
for a_url in url_all:
a_title=a_url.get_text('target')
#print(a_title)
titles.append(a_title)
a_url = a_url.get('href')
urls.append(a_url)
print(a_url)
#定义txt存储路径。
picpath='D:/news1/'#这里我用的是本程序路径,也可改为c盘或d盘等路径。
def txt(name, text): # 定义函数名
savepath = picpath + name + '.txt'
file = open(savepath, 'a', encoding='utf-8')#因为一个网页里有多个标签p,所以用'a'添加模式
file.write(text)
#print(text)
file.close
#读取urls中存储的ulrs[i],爬取文本。
for i in range(len(urls)):
try:
res = urllib.request.urlopen(urls[i])
html = res.read().decode('utf-8')
soup = BeautifulSoup(html, 'lxml')
for p in soup.select('p'):
t = p.get_text()
txt(titles[i],t)
except OSError:
pass #如果报错就不管,继续读取下一个url
continue```