scrapy爬取链接后再爬取链接内容 ╰+攻爆jí腚メ 2022-05-15 15:10 338阅读 0赞 以下代码是在python3.6环境下测试通过 #!/usr/bin/python # -*- coding:utf-8 -*- from scrapy.http import Request from scrapy.spiders import Spider from scrapy.selector import Selector from storage.items import W3SchoolItem class StorageSpider(Spider): """ 有三个必需的定义的成员:name,start_urls,parse() """ name = "storage" #这个spider的标识 allowed_domains = ["www.zyc56.org.cn"] #域名限制 start_urls = [ #一个url列表,spider从这些网页开始抓取 "http://www.zyc56.org.cn/index.php?m=content&c=index&a=lists&catid=31" ] def parse(self, response): sel = Selector(response) item = StorageItem() mainXpath = sel.xpath('//div[@class="map_intro clear"]') elseXpath = sel.xpath('//div[@class="map_article"]') item['crawlUrl'] = response.url item['enterpriseName'] = mainXpath.xpath('dl/dd[1]/text()').extract() #公司名称 item['contactUser'] = mainXpath.xpath('dl/dd[2]/text()').extract() #联系人 item['contactNumber'] = mainXpath.xpath('dl/dd[3]/b/text()').extract() #联系电话 item['warehouseType'] = mainXpath.xpath('dl/dd[4]/text()').extract()#仓库类型 item['releaseTime'] = mainXpath.xpath('dl/dt/span/text()').extract()#发布时间 item['warehouseAddress'] = elseXpath.xpath('div/span/text()').extract() #所在地区 item['warehouseDetailAddr'] = elseXpath.xpath('div/text()[2]').extract() #所在详细地址 sonPath = elseXpath.xpath('table/tbody/tr/td[contains(text(),"仓库规模")]/following-sibling::td[position()=1]') if not len(sonPath): #空数组 sonPath = elseXpath.xpath('table/tbody/tr/td[contains(text(),"仓库建设方案")]/../following-sibling::tr/td[position()=2]') item['warehouseSize'] = sonPath.xpath('normalize-space(translate(translate(string(.),"\xa0",""),"平米",""))').extract() if len(item['enterpriseName']): yield item alinkList = sel.xpath('//dd[@class="intro"]/a/@href').extract() for alink in alinkList: yield Request(url=alink, callback=self.parse) [pipelines.py][] 文件代码如下: # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html #from scrapy.exporters import JsonItemExporter import pymysql class StoragePipeline(object): # def open_spider(self, spider): # #可选实现,当spider被开启时,这个方法被调用。 # #输出到 w3school_data_utf8.json 文件 # self.file = open('w3school_data_utf8.json', 'wb') # self.exporter = JsonItemExporter(self.file, encoding='utf-8') # self.exporter.start_exporting() # # def close_spier(self, spider): # #可选实现,当spider被关闭时,这个方法被调用 # self.exporter.finish_exporting() # self.file.close() # # def process_item(self, item, spider): # self.exporter.export_item(item) # return item def __init__(self): self.dbpool = pymysql.connect( host = '127.0.0.1', db = 'db_scrapy', user = 'root', passwd = 'abc123', charset = 'utf8' ) def process_item(self, item, spider): db = self.dbpool cur = db.cursor() try: cur.execute("insert into storage_info(enterprise_name, warehouse_address, warehouse_detail_addr, warehouse_size,warehouse_type, contact_user, contact_number, release_time, add_type, crawl_url) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", #release_time, ( item['enterpriseName'][0][5:], item['warehouseAddress'][0], item['warehouseDetailAddr'][0].strip()[5:], item['warehouseSize'][0].strip(), item['warehouseType'][0][5:], item['contactUser'][0][4:], item['contactNumber'][0], item['releaseTime'][0][3:], 1, item['crawlUrl'] ) ) db.commit() except Exception as e: print('错误',format(e)) db.rollback() db.close() return item [items.py][] 文件代码如下: # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://doc.scrapy.org/en/latest/topics/items.html import scrapy class StorageItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() enterpriseName = scrapy.Field() warehouseAddress = scrapy.Field() warehouseDetailAddr = scrapy.Field() warehouseSize = scrapy.Field() warehouseType = scrapy.Field() releaseTime = scrapy.Field() contactUser = scrapy.Field() contactNumber = scrapy.Field() addType = scrapy.Field() crawlUrl = scrapy.Field() [settings.py][] 文件代码需修改如下配置: # Configure item pipelines # See https://doc.scrapy.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES = { 'storage.pipelines.StoragePipeline': 300, } [pipelines.py]: http://pipelines.py [items.py]: http://items.py [settings.py]: http://settings.py
相关 用python爬取阳光电影的链接 用python爬取阳光电影的链接,并存入文本。把链接直接复制到迅雷软件即可下载电影,方便快捷。python代码如下: -- encoding: utf-8 -- 本是古典 何须时尚/ 2022年12月16日 13:27/ 0 赞/ 163 阅读
相关 BeautifulSoup编写脚本实现内网网页链接爬取 \!/usr/bin/python3 env \ -\- coding:utf-8 -\- """ auther:xiaohong.d data:2020-04-30 ﹏ヽ暗。殇╰゛Y/ 2022年11月24日 15:28/ 0 赞/ 155 阅读
相关 Java爬取网站的所有图片链接 文章目录 一、准备 二、引入依赖 三、源代码 一、准备 jsoup是一个用于处理真实世界 HTML 的 Java 库。 「爱情、让人受尽委屈。」/ 2022年09月06日 14:27/ 0 赞/ 206 阅读
相关 Python爬取磁力链信息 更新说明 2017.4.23 本程序使用MySQL数据库存储,使用本程序前请手动修改相关程序开头处的数据库连接语句。 需要requests、bs4、pymysql Bertha 。/ 2022年06月17日 10:22/ 0 赞/ 261 阅读
相关 scrapy爬取链接后再爬取链接内容 以下代码是在python3.6环境下测试通过 !/usr/bin/python -- coding:utf-8 -- from scrapy.h ╰+攻爆jí腚メ/ 2022年05月15日 15:10/ 0 赞/ 339 阅读
相关 使用java+WebMagic实现电影资源链接爬取 1、首先百度搜索webmagic网站,网址如下:[https://github.com/code4craft/webmagic/releases/tag/WebMagic-0. 野性酷女/ 2022年02月13日 13:50/ 0 赞/ 375 阅读
相关 scrapy初学习--爬取自己csdn博客全部的文章链接 爬取自己csdn博客全部的文章链接 首先观察自己文章目录列表的url ![在这里插入图片描述][20190620130702324.png] 可以很方便地构造出全部的 ╰+哭是因爲堅強的太久メ/ 2022年01月11日 09:55/ 0 赞/ 241 阅读
相关 scrapy提高爬取速度 scrapy在单机跑大量数据的时候,在对settings文件不进行设置的时候,scrapy的爬取速度很慢,再加上多个页面层级解析,往往导致上万的数据可能爬取要半个小时之久,这还 ゝ一纸荒年。/ 2021年09月16日 22:22/ 0 赞/ 509 阅读
相关 爬取某个链接里面的所有图片... 直接上代码 -- coding: utf-8 -- import urllib from bs4 import BeautifulSoup 阳光穿透心脏的1/2处/ 2021年09月16日 06:04/ 0 赞/ 271 阅读
还没有评论,来说两句吧...