㈠ python中scapy和socket性能优化的问题
我想不出还有什么更好解决办法了。期待高手解答。
㈡ Python安装Scrapy出现以下错误怎么办
scapy安装的错误有几种类型。
因为网络限制,你无法自动下载依赖的库
因为版本冲突问题,导致你安装scapy时无法完成安装,或者是安装无法正确使用
因为编译的位数不同64位和32位不同,导致的问题
解决办法:
简单的解决办法。如果scrapy对你很重要。重新安装一套python2.7然后从头安装scrapy,可以从pypi网站上下载。也可以从unofficial来源,一口气安装好的包。
耐心的解决办法。把scrapy的源码拿过来,执行python
setup.py
install,遇到哪个包不好用,就替换掉。办法是将那个包的源代码拿过来,先删除site-packages里的相应包,再手工执行python
setup.py
install。要有心理准备,很可能需要vc++
2010的编译器。
最简单的办法,使用pip
install
scrapy。
如果你是在ubuntu下面apt-get
install
python-scrapy就搞定了。
㈢ python scrapy 怎么将爬取的内容写出
首先,安装Python,坑太多了,一个个爬。由于我是windows环境,没钱买mac, 在安装的时候遇到各种各样的问题,确实各种各样的依赖。安装教程不再赘述。如果在安装的过程中遇到 ERROR:需要windows c/c++问题,一般是由于缺少windows开发编译环境,晚上大多数教程是安装一个VisualStudio,太不靠谱了,事实上只要安装一个WindowsSDK就可以了。下面贴上我的爬虫代码:
爬虫主程序:
[python]view plain
#-*-coding:utf-8-*-
importscrapy
fromscrapy.httpimportRequest
fromzjf.FsmzItemsimportFsmzItem
fromscrapy.selectorimportSelector
#圈圈:情感生活
classMySpider(scrapy.Spider):
#爬虫名
name="MySpider"
#设定域名
allowed_domains=["nvsheng.com"]
#爬取地址
start_urls=[]
#flag
x=0
#爬取方法
defparse(self,response):
item=FsmzItem()
sel=Selector(response)
item['title']=sel.xpath('//h1/text()').extract()
item['text']=sel.xpath('//*[@class="content"]/p/text()').extract()
item['imags']=sel.xpath('//div[@id="content"]/p/a/img/@src|//div[@id="content"]/p/img/@src').extract()
ifMySpider.x==0:
page_list=MySpider.getUrl(self,response)
forpage_singleinpage_list:
yieldRequest(page_single)
MySpider.x+=1
yielditem
#init:动态传入参数
#命令行传参写法:scrapycrawlMySpider-astart_url="e_url"
def__init__(self,*args,**kwargs):
super(MySpider,self).__init__(*args,**kwargs)
self.start_urls=[kwargs.get('start_url')]
defgetUrl(self,response):
url_list=[]
select=Selector(response)
page_list_tmp=select.xpath('//div[@class="viewnewpages"]/a[not(@class="next")]/@href').extract()
forpage_tmpinpage_list_tmp:
ifpage_tmpnotinurl_list:
url_list.append("px/"+page_tmp)
returnurl_list
[python]view plain
#-*-coding:utf-8-*-
#Defineyouritempipelineshere
#
#Don'_PIPELINESsetting
fromzjfimportsettings
importjson,os,re,random
importurllib.request
importrequests,json
fromrequests_toolbelt.multipart.encoderimportMultipartEncoder
classMyPipeline(object):
flag=1
post_title=''
post_text=[]
post_text_imageUrl_list=[]
cs=[]
user_id=''
def__init__(self):
MyPipeline.user_id=MyPipeline.getRandomUser('37619,18441390,18441391')
#processthedata
defprocess_item(self,item,spider):
#获取随机user_id,模拟发帖
user_id=MyPipeline.user_id
#获取正文text_str_tmp
text=item['text']
text_str_tmp=""
forstrintext:
text_str_tmp=text_str_tmp+str
#print(text_str_tmp)
#获取标题
ifMyPipeline.flag==1:
title=item['title']
MyPipeline.post_title=MyPipeline.post_title+title[0]
#保存并上传图片
text_insert_pic=''
text_insert_pic_w=''
text_insert_pic_h=''
forimag_urlinitem['imags']:
img_name=imag_url.replace('/','').replace('.','').replace('|','').replace(':','')
pic_dir=settings.IMAGES_STORE+'%s.jpg'%(img_name)
urllib.request.urlretrieve(imag_url,pic_dir)
#图片上传,返回json
upload_img_result=MyPipeline.uploadImage(pic_dir,'image/jpeg')
#获取json中保存图片路径
text_insert_pic=upload_img_result['result']['image_url']
text_insert_pic_w=upload_img_result['result']['w']
text_insert_pic_h=upload_img_result['result']['h']
#拼接json
ifMyPipeline.flag==1:
cs_json={"c":text_str_tmp,"i":"","w":text_insert_pic_w,"h":text_insert_pic_h}
else:
cs_json={"c":text_str_tmp,"i":text_insert_pic,"w":text_insert_pic_w,"h":text_insert_pic_h}
MyPipeline.cs.append(cs_json)
MyPipeline.flag+=1
returnitem
#spider开启时被调用
defopen_spider(self,spider):
pass
#sipder关闭时被调用
defclose_spider(self,spider):
strcs=json.mps(MyPipeline.cs)
jsonData={"apisign":"","user_id":MyPipeline.user_id,"gid":30,"t":MyPipeline.post_title,"cs":strcs}
MyPipeline.uploadPost(jsonData)
#上传图片
defuploadImage(img_path,content_type):
"uploadImagefunctions"
#UPLOAD_IMG_URL="dpostimage"
UPLOAD_IMG_URL="oadpostimage"
#传图片
#imgPath='D:picshttp___img_nvsheng_com_uploads_allimg_170119_18-1f1191g440_jpg.jpg'
m=MultipartEncoder(
#fields={'user_id':'192323',
#'images':('filename',open(imgPath,'rb'),'image/JPEG')}
fields={'user_id':MyPipeline.user_id,
'apisign':'',
'image':('filename',open(img_path,'rb'),'image/jpeg')}
)
r=requests.post(UPLOAD_IMG_URL,data=m,headers={'Content-Type':m.content_type})
returnr.json()
defuploadPost(jsonData):
CREATE_POST_URL="hmagespost"
[python]view plain
reqPost=requests.post(CREATE_POST_URL,data=jsonData)
[python]view plain
defgetRandomUser(userStr):
user_list=[]
user_chooesd=''
foruser_idinstr(userStr).split(','):
user_list.append(user_id)
userId_idx=random.randint(1,len(user_list))
user_chooesd=user_list[userId_idx-1]
returnuser_chooesd
[python]view plain
#-*-coding:utf-8-*-
#
#
#Seedocumentationin:
importscrapy
classFsmzItem(scrapy.Item):
#:
#name=scrapy.Field()
title=scrapy.Field()
#tutor=scrapy.Field()
#strongText=scrapy.Field()
text=scrapy.Field()
imags=scrapy.Field()
这样就可以爬取aaa.com下的内容了
㈣ python安装scrapy,所需要安装的包都安装好了,但是在最后安装scrapy时,老是出现错误
这个问题已经困扰我好几天了。。。大兄弟后面是怎么解决这个问题的?