zoukankan      html  css  js  c++  java
  • Scrapy的初体验

    上一节安装了python2和python3的开发环境

    首先第一步:进入开发环境,workon article_spider

    进入这个环境:

    安装Scrapy,在安装的过程中出现了一些错误:通常这些错误都是部分文件没有安装导致的,因为大学时经常出现,所以对解决这种问题,很实在,直接到http://www.lfd.uci.edu/~gohlke/pythonlibs/这个网站下载对应的文件,下载后用pip安装,具体过程不在赘述。

    然后进入工程目录,并打开我们的新创建的虚拟环境:

    新建scrapy工程:ArticleSpider

    创建好工程框架:在pycharm中导入

     

    scrapy.cfg: 项目的配置文件。
    ArticleSpeder/: 该项目的python模块。之后您将在此加入代码。
    ArticleSpeder/items.py: 项目中的item文件。
    ArticleSpeder/pipelines.py: 项目中的pipelines文件。
    ArticleSpeder/settings.py: 项目的设置文件。
    ArticleSpeder/spiders/: 放置spider代码的目录。

    回到dos窗口用basic创建模板

    上面pycharm的截图中已经创建好了:

    为了今后更好的开发,创建一个用于debug的类main.py

    1. from scrapy.cmdline import execute
    2. import sys
    3. import os
    4. print(os.path.dirname(os.path.abspath(__file__)))
    5. sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    6. execute(["scrapy","crawl","jobbole"])

     这是代码内容

    import sys 为了设置工程目录,调用命令才会生效

    里面的路径最好不要写死:可以通过os获取路径,更加灵活

    execute用来执行目标程序的

    jobbole.py的内容

    1. class JobboleSpider(scrapy.Spider):
    2. name = 'jobbole'
    3. allowed_domains = ['blog.jobbole.com']
    4. start_urls = ['http://blog.jobbole.com/110287']
    5. def parse(self, response):
    6. re_selector = response.xpath("/html/body/div[1]/div[3]/div[1]/div[1]/h1")
    7. re2_selector = response.xpath('//*[@id="post-110287"]/div[1]/h1')
    8. title = response.xpath('//div[@class="entry-header"]/h1/text()')
    9. create_date = response.xpath("")
    10. #//*[@id="112706votetotal"]
    11. dian_zan = int(response.xpath("//span[contains(@class,'vote-post-up ')]/h10/text()").extract()[0])
    12. pass

     通过xpath技术获取对应文章的一些字段信息,包括标题,时间,评论数,点赞数等,因为比较简单所以不在赘述

    写到这儿,大家也知道每次在pycharm里面debug和麻烦,因为scrapy比较大,所以这时候我们可以使用Scrapy shell来调试

    标记部分是目标网站的地址:现在我们可以更加愉悦的进行调试了。

    今天scrapy的初体验就到这里了

  • 相关阅读:
    MVC+jQuery开发B/S系统②:表单绑定
    插入排序
    笔记:实例管理
    文件读写冲突的解决办法:ReaderWriterLock
    MVC+jQuery数据绑定①:列表绑定(二)
    MVC+jQuery数据绑定①:列表绑定(三)
    非递归求 T(n) = [T(n1),n,T(n1)] 已知T1=[1]
    笔记:契约总结
    面试题:1~ n1 有n个数,是有序的,找出重复的那个数。
    Thread系列——ThreadPool
  • 原文地址:https://www.cnblogs.com/clovejava/p/7719702.html
Copyright © 2011-2022 走看看