首页 > 编程语言 >Python爬虫之Scrapy制作爬虫

Python爬虫之Scrapy制作爬虫

时间:2023-03-03 09:12:26浏览次数:46  
标签:Python bytes 爬虫 item Scrapy sel scrapy

前几天我有用过Scrapy架构编写了一篇爬虫的代码案例深受各位朋友们喜欢,今天趁着热乎在上一篇有关Scrapy制作的爬虫代码,相信有些基础的程序员应该能看的懂,很简单,废话不多说一起来看看。

前期准备:

通过爬虫语言框架制作一个爬虫程序

import scrapy
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
    name = 'dmoz'
    allowed_domains = ['dmoz.org']
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]
    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//ul[@class="directory-url"]/li')
        for sel in sites:
            item = DmozItem() # 实例化一个 DmozItem 类
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item

程序运行:

通过爬虫程序输入命令,执行爬虫采集目标网站

#! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 爬虫ip服务器(http://jshk.com.cn/mb/reg.asp?kefu=xjy)  
                proxyHost = "ip地址"
                proxyPort = "端口"

                # 爬虫ip验证信息
                proxyUser = "username"
                proxyPass = "password"

数据保存:

Scrapy爬虫方式一般分为4种,可以参考以下保存方式

json格式,默认为Unicode编码

scrapy crawl itcast -o teachers.json

json lines格式,默认为Unicode编码

scrapy crawl itcast -o teachers.jsonl

csv 逗号表达式,可用Excel打开

scrapy crawl itcast -o teachers.csv

xml格式

scrapy crawl itcast -o teachers.xml

标签:Python,bytes,爬虫,item,Scrapy,sel,scrapy
From: https://www.cnblogs.com/q-q56731526/p/17174361.html

相关文章

  • Python数据存储
    在运算过程中,得到的经验和模型都是算法的重要结果。直接把数据输入到对应的地方保证了各个模块之间的隔离。numpy数组保存numpy的强大之处有目共睹.npynumpy.save("f......
  • 爬虫概述
    ###爬虫概述什么是爬虫?-就是通过编写程序,让其模拟浏览上网,然后再互联网中抓取数据的过程。-关键词抽取:-模拟:浏览器就是一个纯天然最原始的一个爬虫工具......
  • 2023年第 14期《Python接口自动化+Playwright 》课程,4月2号开学(课程全面升级!)!
    2023年第14期《python接口web自动化+测试开发》课程,4月2号开学(课程全面升级!)主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:2023年4月2号-2023年......
  • python中读取txt文件?
    numpy.savetxt("filename.txt",a)b=numpy.loadtxt("filename.txt")参考资料:对numpy数据写入文件的方法讲解_python_脚本之家(jb51.net) ......
  • Python 异步: 在 Asyncio 中运行阻塞任务(14)
    阻塞任务是阻止当前线程继续进行的任务。如果在asyncio程序中执行阻塞任务,它会停止整个事件循环,从而阻止任何其他协程继续进行。我们可以通过asyncio.to_thread()和......
  • Python assert(断言)
    Pythonassert(断言)用于判断一个表达式,在表达式条件为false的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如......
  • python爬虫自动化常用库
    请求库:1、urllib:urllib库是Python3自带的库(Python2有urllib和urllib2,到了Python3统一为urllib),这个库是爬虫里最简单的库。2、requests:requests属于第三方库,使用起来比urlli......
  • (已解决)vscode python 代码高亮异常 - 引入的包不显示
    问题情况:识别不了引入的包,代码一片白花花的。解决方法:点最左下角的齿轮,打开设置,搜索language,把python的languageserver改成pylance,如下图:如果pylance出了问......
  • python爬虫-xpath基础
    #准备一个html格式文档doc='''<div><ul><liclass="item-0"><ahref="https://ask.hellobi.com/link1.html">firstitem</a></li><liclas......
  • flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例 以及整合eu
    flask-fastapi(python异步API框架可以自动生成swagger文档)常用示例以及整合eurakanacosflask-fastapi  (python异步API框架 可以自动生成swagger文......