微信小程序社区爬取

news/2024/7/19 12:34:32 标签: 爬虫, java, 开发工具
# CrawlSpider 需要使用:规则提取器 和 解析器
# 1. allow设置规则的方法:要能够限制在目标url上面, 不要跟其他的url产生相同的正则即可
# 2. 什么情况下使用follow: 如果在爬取页面的时候,需要将满足条件的url再进行跟进,那么就设置为True, 否则是False
# 3. 什么情况下使用callack: 如果这个url对应的页面只是为了获取更多的url,并不需要里面的数据,那么可以不指定callback. 如果想要获取url对应页面里的数据,那么就需要指定callback


# spider文件
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from wxapp.items import WxappItem

class WxappspiderSpider(CrawlSpider):
    name = 'wxappSpider'
    allowed_domains = ['wxapp-union.com']
    start_urls = ['http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1']

    rules = (
        Rule(LinkExtractor(allow=r'http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=\d'),
              follow=True),
        Rule(LinkExtractor(allow=r'.+article-.+\.html'),
             callback='parse_detail', follow=False),
    )

    def parse_detail(self, response):
        # 解析详情页
        # print(response) # <200 http://www.wxapp-union.com/article-5137-1.html> 详情页
        title = response.xpath('//h1[@class="ph"]/text()').extract_first()
        author = response.xpath('//p[@class="authors"]/a/text()').extract_first()
        content = response.xpath('//td[@id="article_content"]//text()').extract()
        content = "".join(content).strip()
        print(content)
        print("=="*20)
        item = WxappItem(title=title,author=author,content=content)
        yield item
        

# 管道文件   保存在json文件里
from scrapy.exporters import JsonItemExporter
from scrapy.exporters import JsonLinesItemExporter # 要存的数据量大的时候用这个

class WxappPipeline(object):
    def __init__(self):
        self.fp = open("weixinjiaocheng.json","wb")
        self.exporter = JsonLinesItemExporter(self.fp,ensure_ascii=False,encoding='utf-8')

    def process_item(self, item, spider):
        self.exporter.export_item(item)
        return item
    
    def close_spider(self,spider):
        self.fp.close()

 

转载于:https://www.cnblogs.com/kenD/p/11123702.html


http://www.niftyadmin.cn/n/752440.html

相关文章

系统属性:setProperty(String key, String value)和System.getProperty(String key)总结

// 自带的 System.out.println("java版本号&#xff1a;" System.getProperty("java.version")); System.out.println("Java提供商名称&#xff1a;" System.getProperty("java.vendor")); …

Python笔记 之 最大优先队列

使用Python实现最大优先队列算法 最大优先队列是最大堆的一个应用&#xff0c;如果不熟悉最大堆可以参考&#xff1a; 最大堆排序算法 最大优先队列算法伪算法&#xff1a; 优先队列是一种用来维护由一组元素构成的集合S的数据结构&#xff0c; 的每一个元素都有一个相关的值…

Qcom平台RTC驱动分析

相关文件list&#xff1a; pm8998.dtsi ---RTC dts配置 qpnp-rtc.c  ---qcom RTC驱动 class.c    ---RTC相关class interface.c ---相关RTC功能的接口定义 hctosys.c ---一开机通过RTC设置系统时间rtc-dev.c   ---RTC device fops接口&#xff1a;open、close、ioct…

log4j使用

log4j.rootLoggerINFO,CONSOLElog4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender INFO是日志记录的最低等级&#xff0c;必须写&#xff0c;它和比它高的等级会进入日志&#xff0c;如WARN、ERROR、FATAL、OFF。 关于8个日志等级&#xff0c;参考&#xff1a;https://bl…

python笔记 之 快速排序

使用Python语言实现快速排序算法 算法的最坏运行时间表示为&#xff1a;Θ(n2)\Theta(n^2)Θ(n2) 算法的期望运行时间表示为&#xff1a;Θ(nlg⁡n)\Theta(n\lg{n})Θ(nlgn) 快速排序算法伪算法如下&#xff1a; quick_sort(A,p,r)if p<rqpartition(A,p,r)quit_sort(A,p,…

Pyhont笔记 之 快速排序(随机化版本)

使用Python语言实现快速排序算法(随机化版本) 算法的期望运行时间表示为&#xff1a;Θ(nlgn) (随机化版本)快速排序算法伪算法如下&#xff1a; 本章使用了“使用Python语言实现快速排序算法”中的函数&#xff0c;具体请参考&#xff1a; 使用Python语言实现快速排序算法 …

Xshell关闭后,Java应用程序、Tomcat服务等可以后台运行

Xshell中用Java命令运行Java应用程序&#xff0c;或者用./运行sh执行文件后&#xff0c;如果关闭Xshell&#xff0c;即使Xshell会留有一个后台进程&#xff0c;应用程序也会关闭&#xff0c;可以靠执行nohup 你的命令 &来解决问题&#xff0c;这个命令意味着在后台运行应用…

Python笔记 之 jieba模块

更详细的解释及举例请查看官方文本&#xff1a;jieba参考文档 jieba分词 支持四种分词模式&#xff1a; 精确模式&#xff0c;试图将句子最精确地切开&#xff0c;适合文本分析&#xff1b; 全模式&#xff0c;把句子中所有的可以成词的词语都扫描出来, 速度非常快&#xff0…