怎么在Python中使用Scrapy爬取网页内容

  介绍

本篇文章给大家分享的是有关怎么在Python中使用Scrapy爬取网页内容,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>爬虫主程序:

#, - *安康;编码:utf-8  - * -   import  scrapy   得到scrapy.http  import 请求   得到zjf.FsmzItems  import  FsmzItem   得到scrapy.selector  import 选择器   #,圈圈:情感生活   class  MySpider (scrapy.Spider):   ,#爬虫名=,name “MySpider"   ,#设定域名   ,allowed_domains =, (“nvsheng.com")   ,#爬取地址=,start_urls  []   ,#国旗   x =, 0   ,#爬取方法   ,def 解析(自我,,反应):   时间=item 才能;FsmzItem ()   sel =,才能选择器(响应)   项才能[& # 39;标题# 39;],=,sel.xpath (& # 39;//h2/text () & # 39;) .extract ()   项才能[& # 39;文本# 39;],=,sel.xpath (& # 39;//* [@class=癱ontent"]/p/text () & # 39;) .extract ()   项才能[& # 39;imags& # 39;],=, sel.xpath (& # 39;//div [@ id=癱ontent"]/p/a/img/@src |//div [@ id=癱ontent"]/p/img/@src& # 39;) .extract ()   if 才能;MySpider.x ==, 0:   ,,page_list =, MySpider.getUrl(自我、响应)   ,,for  page_single  page_list:拷贝   ,,,油品收率请求(page_single)   MySpider.x 才能+=1   ,油品收率项   ,# init:动态传入参数   ,#命令行传参写法:,scrapy  crawl  MySpider  -a  start_url=癶ttp://some_url"   ,def  __init__(自我,* args, * * kwargs):   超级才能(MySpider,自我). __init__ (* args, * * kwargs)   self.start_urls 才能=,[kwargs.get (& # 39; start_url& # 39;))   ,def  getUrl(自我,,反应):   时间=url_list 才能;[]   select =,才能选择器(响应)   page_list_tmp 才能=,select.xpath (& # 39;//div [@class=皏iewnewpages"]/[不是(@class=皀ext")]/@href& # 39;) .extract ()   for 才能;page_tmp  page_list_tmp:拷贝   ,,if  page_tmp  not 拷贝url_list:   ,,,url_list.append (“http://www.nvsheng.com/emotion/px/", +, page_tmp)   return 才能url_list

<强>管道类

#, - *安康;编码:utf-8  - * -   #,Define  your  item  pipelines 这里   #   #,不要# 39;t  forget 用add  your  pipeline 用,ITEM_PIPELINES 设置   #,见:http://doc.scrapy.org/en/latest/topics/item-pipeline.html   得到zjf  import 设置   import  json,操作系统,再保险、随机的   import  urllib.request   import 请求,json   得到requests_toolbelt.multipart.encoder  import  MultipartEncoder   class  MyPipeline(对象):   flag =, 1=,post_title  & # 39; & # 39;=,post_text  []=,post_text_imageUrl_list  []=,cs  []   ,user_id=& # 39; & # 39;   自我,def  __init__ ():   时间=MyPipeline.user_id 才能;MyPipeline.getRandomUser (& # 39; 37619、18441390、18441390 & # 39;)   # process 从而数据   ,def  process_item(自我,,,,蜘蛛):   #才能获取随机user_id,模拟发的帖   user_id 才能=MyPipeline.user_id   #才能获取正文text_str_tmp   text =,项目才能[& # 39;文本# 39;】   text_str_tmp 才能=,““   for 才能;str 拷贝文本:   ,,text_str_tmp =, text_str_tmp  + str   #,才能打印(text_str_tmp)   #才能获取标题   if 才能;MyPipeline.flag ==, 1:   ,,title =,项[& # 39;标题# 39;】   ,,MyPipeline.post_title =, MyPipeline.post_title  +,标题[0]   #才能保存并上传图片   时间=text_insert_pic 才能;& # 39;& # 39;   时间=text_insert_pic_w 才能;& # 39;& # 39;   时间=text_insert_pic_h 才能;& # 39;& # 39;   for 才能;imag_url 拷贝项目(& # 39;imags& # 39;):   ,,img_name =, imag_url.replace (& # 39;/& # 39; & # 39; & # 39;) .replace(& # 39;强生# 39;& # 39;& # 39;).replace (& # 39; | & # 39; & # 39; & # 39;) .replace (& # 39;: & # 39; & # 39; & # 39;)   ,,pic_dir =, settings.IMAGES_STORE  +, & # 39; % s.jpg& # 39;, % (img_name)   ,,urllib.request.urlretrieve (imag_url pic_dir)   ,,#图片上传,返回json   ,,upload_img_result =, MyPipeline.uploadImage (pic_dir & # 39;图像/jpeg # 39;)   ,,#获取json中保存图片路径   ,,text_insert_pic =, upload_img_result[& # 39;结果# 39;][& # 39;image_url& # 39;】   ,,text_insert_pic_w =, upload_img_result[& # 39;结果# 39;][& # 39;w # 39;】   ,,text_insert_pic_h =, upload_img_result[& # 39;结果# 39;][& # 39;h # 39;】   #拼才能接json   if 才能;MyPipeline.flag ==, 1:   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Python中使用Scrapy爬取网页内容