python使用scrapy_Python-Scrapy使用

创建一个新的项目

$ scrapy startproject jianshu

编辑需要爬取的参数

class JianshuItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

title = scrapy.Field() # 标题

desc = scrapy.Field() # 描述

img = scrapy.Field() # 图片

author = scrapy.Field() # 作者

like_nums = scrapy.Field() # 喜欢数量

jsb = scrapy.Field() # 简书币

ds = scrapy.Field() # 打赏

settings文件中配置user-agent等请求头

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'cache-control': 'max-age=0',

'accept-encoding': 'gzip, deflate, br',

'accept-language': 'zh-CN,zh;q=0.9',

'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'

}

编写爬取代码

class JianShu(scrapy.Spider):

name = 'jianshu'

allowed_domains = ['jianshu.com'] # 限定爬取的范围

start_urls = [

'https://www.jianshu.com/'

]

def parse(self, response):

sel = scrapy.selector.Selector(response)

sites = sel.xpath('//div[@id="list-container"]/ul/li')

item = JianshuItem()

title_list = [] # 标题

desc_list = [] # 描述

img_list = [] # 图片

author_list = [] # 作者

like_nums_list = [] # 喜欢数量

jsb_list = [] # 简书币数量

ds_list = [] # 打赏

for site in sites:

title_list.append((site.xpath('div[@class="content"]/a[@class="title"]/text()').extract()))

desc_list.append((site.xpath('div[@class="content"]/p[@class="abstract"]/text()').extract()))

img_list.append((site.xpath('a[@class="wrap-img"]/img/@src').extract()))

author_list.append(

site.xpath('div[@class="content"]/div[@class="meta"]/a[@class="nickname"]/text()').extract())

jsb_list.append(

(site.xpath('div[@class="content"]/div[@class="meta"]/span/text()').extract())[1])

like_nums_list.append(

(site.xpath('div[@class="content"]/div[@class="meta"]/span/text()').extract())[2])

try:

ds_list.append(

(site.xpath('div[@class="content"]/div[@class="meta"]/span/text()').extract())[3])

except Exception as reason:

print(reason)

ds_list.append([])

item['img'] = img_list

item['title'] = title_list

item['desc'] = desc_list

item['author'] = author_list

item['like_nums'] = like_nums_list

item['jsb'] = jsb_list

item['ds'] = ds_list

return item

运行,保存数据为json并存储到本地

scrapy crawl jianshu -o jian_shu_home.json -t json

图片显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单的Python-Scrapy爬取百度搜索结果并对搜索结果进行分析的例子: 首先,我们需要安装Scrapy和lxml库。在命令行中输入以下命令: ``` pip install scrapy pip install lxml ``` 然后,我们可以创建一个名为baidu_spider的新项目,并在项目中创建一个名为baidu的新爬虫。在命令行中输入以下命令: ``` scrapy startproject baidu_spider cd baidu_spider scrapy genspider baidu www.baidu.com ``` 现在,我们在baidu_spider/spiders/baidu.py文件中编写我们的代码。我们将使用Scrapy的Selector来选择我们想要的数据。代码如下: ```python import scrapy class BaiduSpider(scrapy.Spider): name = "baidu" allowed_domains = ["www.baidu.com"] start_urls = ["http://www.baidu.com/s?wd=python"] def parse(self, response): # 获取搜索结果 results = response.xpath('//div[@class="result c-container "]') for result in results: # 获取标题和链接 title = result.xpath('.//h3/a/text()').extract_first().strip() link = result.xpath('.//h3/a/@href').extract_first() # 获取摘要 abstract = result.xpath('.//div[@class="c-abstract"]//text()').extract() abstract = "".join(abstract).strip() # 打印结果 print(title) print(link) print(abstract) ``` 在这个例子中,我们首先定义了我们的爬虫的名称,允许的域名和起始URL。然后我们定义了一个parse函数来处理响应。在parse函数中,我们使用XPath选择器来选择搜索结果。我们使用extract_first()和extract()方法来提取标题、链接和摘要。最后,我们打印了结果。 现在,我们可以在baidu_spider目录中运行以下命令来运行我们的爬虫: ``` scrapy crawl baidu ``` 这将启动我们的爬虫并开始爬取百度搜索结果。在控制台中,您应该能够看到我们的爬虫正在输出搜索结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值