jobbole总结一

来源:互联网 发布:jquery 反序列化json 编辑:程序博客网 时间:2024/06/01 08:28

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 executeimport sysimport ossys.path.append(os.path.dirname(__file__))execute(["scrapy", "crawl", "jobbole"])

可以用来调试scrapy

原创粉丝点击