jobbole总结一

Scrapy项目的 allowed_domains = [“blog.jobbole.com”] 不用加 http://
scrapy.Request(url=article_url, callback=self.parse_article, meta={'front_image_url': front_image_url}没有follow,callback是谁就交给谁解析,meta可以通过request将数据通过response传递到解析函数, 可用item[‘front_image_url’] = [response.meta.get(‘front_image_url’, ”)]获得,没有则返回空

article_div = response.xpath('//div[@id="archive"]/div[@class="post floated-thumb"]')
        # 可以直接遍历
        for div in article_div:
            article_url = div.xpath('./div[@class="post-meta"]/p/a/@href').extract()[0]
            front_image_url = div.xpath('./div[@class="post-thumb"]/a/img/@src').extract()[0]
            print article_url
            print front_image_url

            yield scrapy.Request(url=article_url, callback=self.parse_article, meta={'front_image_url': front_image_url})

通过xpath获得的可以直接遍历.

tags_list = response.xpath("//p[@class='entry-meta-hide-on-mobile']/a/text()").extract()
tags_list = [element for element in tags_list if not element.encode('utf-8').strip().endswith('评论')]
tags = ','.join(tags_list)

tags_list是一个Unicode字符数组,通过列表生成式 可以重新生成一个list去掉原list中以’评论’为结尾的字符
通过join方法可以连接list中的字符串

item['title'] = response.xpath("//div[@class='entry-header']/h1/text()").extract_first("")

这个方法比extract[0]好,不会发生index error当len(list)为0时,返回默认值”“

comment_nums = response.xpath("//div[@class='post-adds']/a/span/text()").extract_first('')
match_re = re.match('.*?(\d+).*', comment_nums)
    if match_re:
        comment_nums = match_re.group(1)
    else:
        comment_nums = 0

利用正则取出评论数字
在项目目录下建立main文件

from scrapy.cmdline import execute

import sys
import os

sys.path.append(os.path.dirname(__file__))
execute(["scrapy", "crawl", "jobbole"])

可以用来调试scrapy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jobbole.py 文件中,我们可以使用 Scrapy 框架提供的选择器语法和正则表达式来编写具体的爬虫规则。 以下是一个示例: ```python import scrapy class JobboleSpider(scrapy.Spider): name = 'jobbole' allowed_domains = ['blog.jobbole.com'] start_urls = ['http://blog.jobbole.com/all-posts/'] def parse(self, response): post_nodes = response.xpath('//div[@class="post floated-thumb"]') for post_node in post_nodes: post_url = post_node.xpath('./div[@class="post-meta"]/p[@class="excerpt"]/a/@href').extract_first("") yield scrapy.Request(url=post_url, callback=self.parse_detail) next_url = response.xpath('//a[@class="next page-numbers"]/@href') if next_url: yield scrapy.Request(url=next_url, callback=self.parse) def parse_detail(self, response): title = response.xpath('//h1[@class="entry-header"]/text()') content = response.xpath('//div[@class="entry"]') # do something with title and content ``` 在上面的代码中,我们首先定义了一个名为 JobboleSpider 的爬虫类,然后定义了一些属性,包括起始 URL、允许的域名等。 在 parse 方法中,我们使用 XPath 选择器语法来选取页面中的文章节点,并通过 yield 关键字返回一个 Request 对象,用于获取文章的详细信息。同时,我们还通过判断是否存在下一页的链接来实现翻页。 在 parse_detail 方法中,我们同样使用 XPath 选择器语法来选取文章的标题和内容。 这些规则是根据目标网站的 HTML 结构和页面特征来编写的,可以根据实际情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值