当前位置: 首页 > news >正文

广西网站建设营销公司网站的开发与设计

广西网站建设营销公司,网站的开发与设计,网站建设工作自查报告,汕头模板网建站文章目录 前言一、开始准备1. 包管理和安装chrome驱动2. 爬虫项目的创建#xff08;举个栗子#xff09;3. setting.py的配置 二、代码演示1. 主爬虫程序2. 中间件的配置3. 定义item对象4. 定义管道 总结 前言 scrapy和selenium的整合使用 先定个小目标实现万物皆可爬#… 文章目录 前言一、开始准备1. 包管理和安装chrome驱动2. 爬虫项目的创建举个栗子3. setting.py的配置 二、代码演示1. 主爬虫程序2. 中间件的配置3. 定义item对象4. 定义管道 总结 前言 scrapy和selenium的整合使用 先定个小目标实现万物皆可爬我们是用scrapy框架来快速爬取页面上的数据它是自带并发的速度是可以的。但是一些ajax异步的请求我们不能这么爬取。我们要视同selenium来进行lazy loading也就是懒加载渲染到页面加载数据。 一、开始准备 1. 包管理和安装chrome驱动 首先你要安装以下包 pip install scrapy pip install selenium 3.0.0 pip install pymysql pip install bs4selenium新版本有bug用3.0的版本。chrome驱动的exe执行文件放到你项目的根目录即可。下载地址驱动 2. 爬虫项目的创建举个栗子 创建项目 scrapy startproject cnki您爬取的目标网站 scrapy genspider cnki https://www.cnki.net运行爬虫 # 运行不导出一般在pipelines做导出操作 scrapy crawl cnki # 针对不同的选择可以导出为xlsx、json等格式文件 scrapy crawl demo -o demo.csv3. setting.py的配置 配置数据源如下 DB_HOST localhost DB_PORT 3306 DB_USER root DB_PASSWORD 123456 DB_DATABASE spider防止打印log日志信息 LOG_LEVEL WARNING配置USER_AGENT浏览器控制台找一个 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36配置DEFAULT_REQUEST_HEADERS浏览器控制台找一个 {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36,Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8,Accept-Language: en, }随机延迟 DOWNLOAD_DELAY 3 RANDOMIZE_DOWNLOAD_DELAYTrue中间件权重配置这些中间件给他打开 并且按照项目实际需求配置权重越小越先执行 SPIDER_MIDDLEWARES # 蜘蛛中间件 DOWNLOADER_MIDDLEWARES # 下载中间件 ITEM_PIPELINES # 管道二、代码演示 1. 主爬虫程序 初始化selenium 如果您不需要selenium可以忽略这个 def __init__(self, *args,**kwargs):option webdriver.ChromeOptions() # 实例化一个浏览器对象option.add_argument(--headless) # 添加参数option可以是headless--headless-headlessself.driver webdriver.Chrome(optionsoption) # 创建一个无头浏览器# self.driver webdriver.Chrome() # 创建一个无头浏览器time.sleep(3)super(CnkiSpider, self).__init__(*args, **kwargs)dispatcher.connect(self.close_driver,signals.spider_closed)定义开始请求页面 下面我只放了一个url其实可以定义一组的然后进行遍历一般是分页url使用 还有cookie、代理也可以在这里配置详情请看进去看源码不过一般在中间件配置 def start_requests(self):for url in self.start_urls:yield scrapy.Request(# 这里可以设置多个页面一般用于分页的urlurl,)关闭selenium一定要关掉 def close_driver(self):print(爬虫正在退出执行关闭浏览器哦)time.sleep(2)self.driver.quit()解析页面 这里就不多说八仙过海各显神通 def parse(self,response: HtmlResponse): sel Selector(response) dds sel.css(.journal .main-w1 dl dd) for dd in dds:title dd.css(h6 a::attr(title)).extract_first()link dd.css(h6 a::attr(href)).extract_first()link response.urljoin(link)author dd.css(.baseinfo span #author::attr(title)).extract_first()abstract dd.css(.abstract::text).extract_first()count dd.css(.opts .opts-count li em::text).extract_first()count int(count)date dd.css(.opts .opts-count .date::text).extract_first()date date.split()[1]date datetime.datetime.strptime(date,%Y-%m-%d)rc Recommend()rc[title] titlerc[link] linkrc[author] authorrc[abstract] abstractrc[count] countrc[date] dateyield rc这里要注意我们yield可以返回不仅是item也可以是Request进行页面详情的请求套娃 yield Request(urllink, # 这是上面页面上的链接用来进一步请求callbackself.parse_detail, # 这是回调函数cb_kwargs{item:rc} # 这是把上面的item传递下来)2. 中间件的配置 针对selenium 没有selenium请忽略 class SeleniumDownloaderMiddleware:def process_request(self, request , spider):if spider.name cnki:spider.driver.get(request.url)time.sleep(2)print(f当前访问{request.url})spider.driver.refresh()time.sleep(3)return HtmlResponse(urlspider.driver.current_url,bodyspider.driver.page_source,encodingutf-8)SpiderMiddleware保持默认配置即可DownloaderMiddleware可以配置cookie和代理之类的。如 # 我自定义的解析cookie方法 def get_cookie_dict():cookie_str 填上你的cookiecookie_dict {}for item in cookie_str.split(;):key, value item.split(,maxsplit1)cookie_dict[key] valuereturn cookie_dict COOKIES_DICT get_cookie_dict()# 这是DownloaderMiddleware这是自带的方法哈 def process_request(self, request : Request, spider):request.cookies COOKIES_DICTreturn None3. 定义item对象 用来接受爬虫到的数据 class Recommend(scrapy.Item):title scrapy.Field()author scrapy.Field()abstract scrapy.Field()link scrapy.Field()count scrapy.Field()date scrapy.Field()4. 定义管道 实现对数据库的导入你也可以写excel的 class RecommendPipeline:classmethoddef from_crawler(cls, crawler: Crawler):host crawler.settings[DB_HOST]port crawler.settings[DB_PORT]username crawler.settings[DB_USER]password crawler.settings[DB_PASSWORD]database crawler.settings[DB_DATABASE]return cls(host, port, username, password, database)def __init__(self, host, port, username, password, database):# 1、与数据库建立连接self.conn pymysql.connect(hosthost, portport, userusername, passwordpassword, databasedatabase,charsetutf8mb4)# 2、创建游标self.cursor self.conn.cursor()# 3、批处理需要的容器self.data []def process_item(self, item, spider):title item.get(title, )author item.get(author, )abstract item.get(abstract, )link item.get(link, )count item.get(count, )date item.get(date, )# 如果要实现批处理self.data.append((title,author,abstract,link,count,date))# 如果存够了10条就进数据库if len(self.data) 10:self._to_write_db()# 然后再清空self.data.clear()return itemdef close_spider(self, spider):# 如果最后不满足10条if len(self.data) 0:self._to_write_db()self.conn.close()def _to_write_db(self):# 作为一个实时的推荐我希望将查到的数据作为一个temp# delete from tb_recommend where 1 1 删除满并且主键自增不会从1开始self.cursor.execute(truncate table tb_recommend)self.cursor.executemany(insert into tb_recommend (title,author,abstract,link,count,date) values (%s, %s, %s, %s, %s, %s),self.data)self.conn.commit()记得写入setting.py设置其权重。 *接下来您就可以按照这种方法‘愉’ ‘快’的进行爬虫啦 * 总结 这是scrapy和selenium的具体整合使用scrapy框架的内容还有很多方法还没用到都有待开发。其次就是selenium的填充之类的操作还没有使用还需要去复习selenium的api。
http://www.ihoyoo.com/news/55969.html

相关文章:

  • 购物网站建设的选题意义2013网站建设方案
  • 照明网站建设怎么自己制作游戏
  • 内蒙古网站备案网易企业邮箱登录入口手机网页版
  • 手机能建网站不北京商城网站建设
  • 深圳网站上线方案哪些网站不扣流量
  • 网吧可以做网站吗国家建设厅官方网站
  • 英文网站接单做翻译做网站个网站要多少钱
  • 站群朝阳区搜索优化seosem
  • 专门做建筑设计图库的网站设计广东seo点击排名软件哪家好
  • 代价网站建设小江seo
  • 经营虚拟网站策划书全国城乡建设证件查询
  • 网站开发模宁波百度seo代理
  • 用wordpress设计html5重庆seo论
  • 比特币交易网站可以做空吗网站开发大概多少钱
  • wordpress搭建vip下载站简易的在线数据库网站模板
  • 荆州建设网站相册网站模板
  • 企业网站seo优化交流建设银行网站建设情况
  • 购物商城网站河北建设网官网首页
  • wordpress作者最新评论seo关键词优化最多可以添加几个词
  • 小公司建网站 优帮云做网站的语
  • 厦门市网站建设app开发工商注册网站
  • 织梦做的网站被黑了长沙seo顾问
  • 好网站开发一个旅游网站建设需求分析
  • 广州旅游网站建设设计公司企业培训机构排名
  • 盐山县网站建设公司网站建设 全包 制作
  • 网站平台建设什么意思wordpress清晰笑话
  • 小说网站开发lwordpress 卡密销售
  • 做网站 商标分类今天最新新闻事件报道
  • 中国十大小说网站排名效果营销型网站建设
  • 温州网站建设钱网站开发到上线的流程