爬取《盗墓笔记》和爬取《宦海沉浮》原理一样,但是使用了两种不同的追踪链接的方式,《盗墓笔记》使用的是跟踪下一页链接,直至没有下一页为止,《宦海沉浮》则是将所有的url都放在start_urls中进行爬取

第一步:新建项目

KeysdeMacBook:Desktop keys$ scrapy startproject Novel
New Scrapy project 'Novel', using template directory '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/templates/project', created in:
/Users/keys/Desktop/Novel
You can start your first spider with:
cd Novel
scrapy genspider example example.com

  

第二步:创建爬虫

KeysdeMacBook:Desktop keys$ cd Novel/
KeysdeMacBook:MyCrawl keys$ scrapy genspider BiJi www.mossiella.com/html/255.html

第三步:配置item.py

# -*- coding: utf-8 -*-

import scrapy

class NovelItem(scrapy.Item):
url = scrapy.Field()
title = scrapy.Field()
content = scrapy.Field()

  

第四步:编写爬虫

# -*- coding: utf-8 -*-
import scrapy
from Novel.items import NovelItem class BijiSpider(scrapy.Spider):
name = 'BiJi'
allowed_domains = ['www.mossiella.com']
start_urls = ['http://www.mossiella.com/html/255.html/'] def parse(self, response):
url = response.url
title = response.xpath('//h1/text()').extract_first('')
content = ','.join(response.xpath('//div[@class="zwcent"]/p/text()').extract())
myitem = NovelItem()
myitem['url'] = url
myitem['title'] = title
myitem['content'] = content yield myitem
next_url = response.xpath('//a[@rel="next"]') if next_url:
url = next_url.css('::attr(href)').extract_first('')
yield scrapy.Request(url=url, callback=self.parse)

  

第五步:配置pipeline.py

import pymysql

class MysqlPipeline(object):
# 采用同步的机制写入mysql
def __init__(self):
self.conn = pymysql.connect(
'127.0.0.1',
'root',
'rootkeys',
'Article',
charset="utf8",
use_unicode=True)
self.cursor = self.conn.cursor() def process_item(self, item, spider):
insert_sql = """
insert into BiJi(url, title, content)
VALUES (%s, %s, %s)
"""
# 使用VALUES实现传值
self.cursor.execute(
insert_sql,
(item["url"],
item["title"],
item["content"]))
self.conn.commit()

  

第六步:配置setting.py
BOT_NAME = 'Novel'
SPIDER_MODULES = ['Novel.spiders']
NEWSPIDER_MODULE = 'Novel.spiders'
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
ROBOTSTXT_OBEY = False

  

第七步:运行爬虫
import os
import sys
from scrapy.cmdline import execute sys.path.append(os.path.dirname(os.path.abspath(__file__))) run_spider = 'BiJi' if __name__ == '__main__':
print('Running Spider of ' + run_spider)
execute(['scrapy', 'crawl', run_spider])

  

最新文章

  1. 实体框架高级应用之动态过滤 EntityFramework DynamicFilters
  2. 利用HttpURLConnection发送请求
  3. Qt4.8.5 QtWebKit QWebView 用户栈检查崩溃问题的思考
  4. 磨刀不误砍柴工,使用visual studio之前应该先了解这些...
  5. Spring 注解实体类中非数据库字段属性
  6. c的基础 1. 无符号数和补码
  7. form 转json最佳示例
  8. HDU 3743 Frosh Week(归并排序求逆序数)
  9. div的优缺点
  10. 学习React系列(四)——受控组件与非受控组件
  11. APP内置react 应用与APP的交互问题
  12. Maximum Width Ramp LT962
  13. android默认开启adb调试方法分析
  14. 福州大学软件工程1816 | W班 第8次作业[团队作业,随堂小测——校友录]
  15. day5.python列表练习题
  16. Matlab:导数边界值的有限元(Ritz)法
  17. 【测试记录】EF插入查询性能
  18. 演示Thread.sleep(100)和Thread.currentThread().isInterrupted()+@Deprecated:将方法标注为废弃的方法
  19. Mac 配置教程-日常篇
  20. POJ2531&&1416&&2676&&1129

热门文章

  1. Spring之WebContext不使用web.xml启动 初始化重要的类源码分析(Servlet3.0以上的)
  2. 【踩坑】Safari不兼容webpack封装的vue项目
  3. storm trident的filter和函数
  4. main函数与命令行参数
  5. VC和MATLAB混合开发需要注意的一个问题
  6. 初习mysql procedure
  7. Educational Codeforces Round 12补题 经典题 再次爆零
  8. MIPS程序设计实例
  9. Windows server 2012安装oracle11g(32/64位)步骤
  10. 制作新的train,test数据集