scrapy 爬取网页内容

利用scrapy获取城市规划网某板块内容
http://www.planning.org.cn/news/newslist?cid=15&page=1
获取1-10页,所有新闻的标题、日期、发布机构、作者情况

思路

首先构建一级网址:10页,新闻标题页
获取二级网址:每一页的所有新闻的url地址
再利用scrapy获取相应信息

代码

首先新建一个文件夹,在这个路径下新建scrapy项目

scrapy startproject gh02

新建好了后,依次修改items文件,编写爬虫文件

首先修改items文件

import scrapy
class Ghnew02Item(scrapy.Item):
	title = scrapy.Field()  #把这里改成要获取的内容就好
   	date = scrapy.Field()
   	ins = scrapy.Field()
   	author = scrapy.Field()

然后修改编写爬虫文件

import scrapy
import ghnew02.items import Ghnew02Item
#就是刚刚修改的items文件中生成的类

class Gh02(scrapy.Spider):
	name='	gh02'  #爬虫名称,运行的时候输入
	start_urls=[] #先为空,等下放入
	for i in range(1,11):
		url = "http://www.planning.org.cn/news/newslist?cid=15&page=" + str(i)
		start_urls.append(url)  #放入start_urls中了,10页的一级网址
	
	def parse(self,response):
		url = response.url #这是一个相应的url
		#reponse参数详解
		#https://blog.csdn.net/l1336037686/article/details/78536694
		
		res = response.xpath("/html/body/div[5]/div[1]/div/div/h4/a/@href").extract()
		#xpath定位每一个新闻的url位置,并用@href返回
		#如果返回普通的字符用text(),如果是网址链接用@href
		#最后要用extract()
		
		for url in res:
			url = "http://www.planning.org.cn/"+ url
			#获取二级网址
			yield scrapy.Request(url,callback=self.parse2)
			#等下定义第二个方法获取二级网址的信息,所以callback呼叫
			#如果有二级网址操作,就要yield scrapy.Request()

	def parse2(self,response):
		item = Ghnew02Item()
		item['title'] = response.xpath("//h2/text()").extract()
		item['date'] = response.xpath("//div[6]/div[1]/div[2]/div/span[1]/text()").extract()
		item['ins'] = response.xpath("//div/span[2]/text()").extract()[0].replace('\t','').replace('\n','').replace('\r','').replace('\t','')
		item['author'] = response.xpath("//div[2]/div/span[3]/text()").extract()
		return item
		#最后结束用return item	

文件完成,切换到文件夹地址运行就好

scrapy crawl gh02
#如果输出 scrapy crawl gh02 -o gh02.csv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值