实现的功能

输入想要搜索的关键字和输入关键字后的前几页页数(即输入关键字后跳转的网页的页数,如下图)

将包含关键字的文章标题和内容提取出来保存在一个txt文件里面(如下图,输入关键词为高新,前一页)

需要用到的库
获取文章信息需要的库:beautifulsoup4,request;
需要对html一些标签有一定的了解
可以到w3cschool了解
打开维科闻网站输入关键词后,按F12开发者工具,或者右键点击查看源,就可以看到网页的源代码。
代码设计思想
1.每个网页通过request请求获得网页源代码,再通过bs4(beautifulsoup)来对源代码进行提取信息;
2.先观察每次输入关键字之后网址的变化,如我输入高新,可以发现关键字在keywords=里面,那这样可以用input后,将关键字字符串和前面的网址连接起来。


3.观察每一页的网址变化,如第三页,可以发现页数是存在pagenum=里面的(第一页可能忽略了,你可以尝试的输入http://www.ofweek.com/newquery.action?keywords=高新&pagenum=1,发现会跳转第一页),这样就可以将页数和前面2拼接后的网址再拼接起来。

4.接下来就是看搜索关键词后网页的源代码(F12),可以发现每个文章都是在类名为zx-tl的div块标签里面,就可以通过select提取出里面的文章的标题和链接。

5.再将每页文章的链接访问一遍,提取出文章的内容,而再次打开每篇文章的链接,发现文章的内容都是在类名为artical-content的div块里面,通过select把文章的内容提取出来。

6.把文章的内容和标题写入txt文件。
源代码
import re
import requests
from bs4 import BeautifulSoup
titles=[]#存放标题
urls=[]#存放链接
keyword=input("输入想要在维科网搜索的关键字:")#输入关键字
pagenum=input("输入想要查找的前几页(如果输入2,即找前2页的):")#前几页
txt_name="关键词:"+keyword+"前"+pagenum+"页具体内容.txt"#这是文件名的生成
with open(txt_name,'w',encoding='utf-8') as f:#创建文件
f.write(txt_name+'\r')#写入文件名
f.close()
for i in range(1,int(pagenum)+1):#遍历关键词的页数
html="http://www.ofweek.com/newquery.action?keywords="+keyword+"&type=1&pagenum="+str(i)#根据关键词和页数生成对应的链接
resp=requests.get(html)#建立链接
resp.encoding='utf-8'#读取中文时不会出现乱码
content=resp.text
bs=BeautifulSoup(content,'html.parser')
for news in bs.select('div.zx-tl'):#每个标题都是存在类名为no-pic的li标签里面(可以去看维科网搜索关键词后的网页源代码去发现标题的存在标签。基本上都是存在相同的标签里面。)
url=news.select('a')[0]['href']#提取文章出链接
urls.append(url)
title=news.select('a')[0].text#提取文章标题
titles.append(title)
for i in range(len(urls)):#遍历每篇文章的链接
resp=requests.get(urls[i])
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
page_content=bs.select('div.artical-content')[0].text#可以发现文章的内容是存在类名为artical-content的div块里面
with open(txt_name,'a',encoding='utf-8') as f:#写入刚刚建立的txt文件
f.write("\n"+titles[i]+page_content)
f.close()
print("txt文件已经成功记录!")
功能优化
Java版本
我后面也用java写了和这个类似的爬虫,大家需要可以看一看!
Java爬虫之爬取多篇含有关键词的文章标题和内容优化
该博客介绍了如何使用Python爬虫抓取含有特定关键词的文章标题和内容。通过输入关键字和页数,利用beautifulsoup4和requests库解析HTML,根据网页URL规律动态构造页面地址。文章内容主要涉及网页源码分析、URL构造、HTML元素选择以及信息提取,最终将结果保存至TXT文件。同时提到了功能优化和Java版本的实现。
2165





