python使用adbapi实现MySQL数据库的异步存储-创新互联
之前一直在写有关scrapy爬虫的事情,今天我们看看使用scrapy如何把爬到的数据放在MySQL数据库中保存。
创新互联-专业网站定制、快速模板网站建设、高性价比惠阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式惠阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖惠阳地区。费用合理售后完善,十余年实体公司更值得信赖。
为了显示方便,我们把程序设计的简单一点,只是爬一页的数据。我们今天选择伯乐在线这个网站来爬取,只爬取第一页的数据。
首先我们还是要启动一个爬虫项目,然后自己建了一个爬虫的文件jobbole.py。我们先来看看这个文件中的代码
# -*- coding: utf-8 -*- import io import sys import scrapy import re import datetime from scrapy.http import Request from urllib import parse from ArticleSpider.items import JobboleArticleItem, ArticleItemLoader from scrapy.loader import ItemLoader sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') class JobboleSpider(scrapy.Spider): """docstring for JobboleSpider""" name = "jobbole" allowed_domain = ["blog.jobbole.com"] start_urls = ['http://blog.jobbole.com/all-posts/'] def parse(self, response): """ 1.获取列表页中的文章url """ # 解析列表汇中所有文章url并交给scrapy下载器并进行解析 post_nodes = response.css("#archive .floated-thumb .post-thumb a") for post_node in post_nodes: image_url = post_node.css("img::attr(src)").extract_first("")# 这里取出每篇文章的封面图,并作为meta传入Request post_url = post_node.css("::attr(href)").extract_first("") yield Request(url = parse.urljoin(response.url, post_url), meta = {"front_image_url":image_url}, callback = self.parse_detail) def parse_detail(self, response): article_item = JobboleArticleItem() # 通过ItemLoader加载Item # 通过add_css后的返回值都是list型,所有我们再items.py要进行处理 item_loader = ArticleItemLoader(item = JobboleArticleItem(), response = response) item_loader.add_css("title", ".entry-header h2::text") item_loader.add_value("url", response.url) # item_loader.add_value("url_object_id", get_md5(response.url)) item_loader.add_value("url_object_id", response.url) item_loader.add_css("create_date", "p.entry-meta-hide-on-mobile::text") item_loader.add_value("front_image_url", [front_image_url]) item_loader.add_css("praise_nums", ".vote-post-up h20::text") item_loader.add_css("comment_nums", "a[href='#article-comment'] span::text") item_loader.add_css("fav_nums", ".bookmark-btn::text") item_loader.add_css("tags", "p.entry-meta-hide-on-mobile a::text") item_loader.add_css("content", "div.entry") article_item = item_loader.load_item() print(article_item["tags"]) yield article_item pass
名称栏目:python使用adbapi实现MySQL数据库的异步存储-创新互联
浏览地址:http://myzitong.com/article/coscod.html