小编今天又借鉴了一下别人的爬虫,把别人的爬虫给改造了一下,自动好感谢又这些无私奉献的作者,如果大家想要提升一下技术,那么1还是希望大家能够关注一下这些博主,这样你每一次搜素csdn的时候他们才会给你推荐这些,过滤了一大些的不太好的代码,当然最大的一个好处就是促使你喜欢的作者分享更多的代码
就是这个作者了,小编很喜欢它
python爬虫之爬取多篇含有关键词的文章标题和内容_hell_orld的博客-CSDN博客_python爬虫爬取关键词t???????
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文件已经成功记录!")
它的这个代码没有链接的,而且还会给你建立一个文件,当然小编是懒得看文件,所以就把这个给改了一下
下面这个是经过小编改过的,反正由于这个功能很强大,你们用的时候还是尽量悠着点,不要故意使别人的服务器压力过大,就按照小编的这个来
#这个爬虫非常的完美,一切都可以符合条件的运行
import re
import requests,time
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='gbk'#读取中文时不会出现乱码
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='gbk'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
page_content=bs.select('div.artical-content')[0].text#可以发现文章的内容是存在类名为artical-content的div块里面
print("\n"+titles[i])
#下面的这个就是用来打印文章的内容的,不过小编还是喜欢用的时候把它给隐藏起来,这样就可以快速的看一下标题再决定看不看这个文章也确实可以起到
#一定的加快信息资源的利用效率
#print(page_content)
print(urls[i])
time.sleep(1)
#k=str(page_content)
#这个的不好的地方就是现在还没有办法把它给自动的进行分行,还在努力尝试中
#print(k.split('。'))
#ii=0
#for ii in range(len(k)):
#print(k[ii])
#print(urls[i])
'''with open(txt_name,'a',encoding='utf-8') as f:#写入刚刚建立的txt文件
f.write("\n"+titles[i]+page_content)
f.close()'''
#print("txt文件已经成功记录!")
|