登录
    Technology changes quickly but people's minds change slowly.

Python 爬虫入门篇(二)–爬呀爬文章

技术宅 破玉 1565次浏览 0个评论

寻找目标

由于刚刚接触目标,我们肯定要找一个好爬的资讯网站啊,这样爬成功了我们才会有点成就感,以鼓励自己继续学习。此篇文章中,我们以金融之家这个资讯网站为例来爬取文章
jrzj

爬取之前的工作

分析网站内容,进行抓取

我们借助于chrome浏览器审查元素的功能,首先对网站进行分析
ll
借助于审查元素,我们就可以获取这个元素对应的html标签代码,我们要获取这个元素中的内容,就要通过爬虫找到这个元素的标签,然后处理这个标签从而获得这个元素的内容。
以这样的思路,我们对将要爬取的链接进行分析,由于首页上内容比较乱,我们首先按照某一个分类进行爬取,比如(http://www.jrzj.com/global/)这代表的是分类为”全球”的文章所对应的链接。
list
通过审查元素我们可以发现分类中的文章都是一个list,我们需要解析这些标签来获取文章的链接

        res=requests.get(url)
	res.raise_for_status()
	soup=bs4.BeautifulSoup(res.text,'html.parser')
	#找到div --'zuixinfabu'--->找到所有dd标签
	dd_list=soup.find('div',{'class':'zuixinfabu'}).findAll('dd')
	#遍历所有dd标签,取得每篇文章的链接
	for dd in dd_list:
		articleUrl=dd.find('a',{'target':'_blank'}).get('href')
		print('正在爬取:----->%s'%articleUrl)

上面是抓取的一页上的列表中文章链接,那么我们如何抓取其他页面上的呢,很好办,只要我们根据文章列表下的”下一页”对下一页文章列表进行获取就行了

prevLinks=soup.find('div',{'class':'fy_big'}).findAll('a',{'class':'a1'})
	for prevLink in prevLinks:
		if prevLink.get_text()=='下一页':
			url='http://www.jrzj.com/global/'+prevLink.get('href')

这样我们就获得了下一页的链接。根据遍历到最后一页进行结束就可以了

url=('http://www.jrzj.com/global/')
while url!='http://www.jrzj.com/global/list-9-1483-0.html':
	print('当前爬取的页面:-------->%s'%url)
	res=requests.get(url)
	res.raise_for_status()
	soup=bs4.BeautifulSoup(res.text,'html.parser')
	#找到div --'zuixinfabu'--->找到所有dd标签
	dd_list=soup.find('div',{'class':'zuixinfabu'}).findAll('dd')
	#遍历所有dd标签,取得每篇文章的链接
	for dd in dd_list:
		articleUrl=dd.find('a',{'target':'_blank'}).get('href')
		print('正在爬取:----->%s'%articleUrl)

	prevLinks=soup.find('div',{'class':'fy_big'}).findAll('a',{'class':'a1'})
	for prevLink in prevLinks:
		if prevLink.get_text()=='下一页':
			url='http://www.jrzj.com/global/'+prevLink.get('href')
print('Done')

获取文章内容

要获取文章内容,我们就需要单独分析一篇文章了。我们就获取一个最简单的,文章标题

我们获取文章标题,并且将标题和链接写入文件。

def get_article_title(url):
	articleres=requests.get(url)
	articleres.raise_for_status()
	articlesoup=bs4.BeautifulSoup(articleres.text,'html.parser')
	title=articlesoup.h1.get_text()
	with open('articeltitle.txt','a') as f:
		f.write(url+'-----'+title+'\n')

程序综合

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import requests,os,bs4

def get_article_title(url):
	articleres=requests.get(url)
	articleres.raise_for_status()
	articlesoup=bs4.BeautifulSoup(articleres.text,'html.parser')
	title=articlesoup.h1.get_text()
	with open('articeltitle.txt','a') as f:
		f.write(url+'-----'+title+'\n')

url=('http://www.jrzj.com/global/')
while url!='http://www.jrzj.com/global/list-9-1483-0.html':
	print('当前爬取的页面:-------->%s'%url)
	res=requests.get(url)
	res.raise_for_status()
	soup=bs4.BeautifulSoup(res.text,'html.parser')
	#找到div --'zuixinfabu'--->找到所有dd标签
	dd_list=soup.find('div',{'class':'zuixinfabu'}).findAll('dd')
	#遍历所有dd标签,取得每篇文章的链接
	for dd in dd_list:
		articleUrl=dd.find('a',{'target':'_blank'}).get('href')
		print('正在爬取:----->%s'%articleUrl)
		get_article_title(articleUrl)

	prevLinks=soup.find('div',{'class':'fy_big'}).findAll('a',{'class':'a1'})
	for prevLink in prevLinks:
		if prevLink.get_text()=='下一页':
			url='http://www.jrzj.com/global/'+prevLink.get('href')
print('Done')

上述就是我们的爬取文章的爬虫。只爬取了文章标题,爬取分析文章内容就留给读者自行考虑。


华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明Python 爬虫入门篇(二)–爬呀爬文章
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址