㈠ 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時,老是出現錯誤
這個問題已經困擾我好幾天了。。。大兄弟後面是怎麼解決這個問題的?