昨天在微信公衆號後臺搞了個開車的功能,大概是根據回覆的關鍵字去bt搜索站搜索種子地址而後回覆。用了xpath作數據獲取,但感受效率不夠,容易超時出現「公衆號暫時沒法服務」的狀況,考慮兩種解決方案:html
1.優化爬蟲效率,提高獲取結果的時效;json
2.優化微信回覆邏輯;(微信api文檔給出的解決方案是默認回覆空或success,而後調用客服消息接口回覆內容,但我的公衆號沒法開通客服消息接口,故沒法按此方案解決)api
目前只能保持現狀,貼上代碼:微信
ps:經過用戶輸入的關鍵詞獲取搜索結果裏的磁力連接,i表示獲取前多少條記錄。因爲搜索結果默認是以熱度排序,因此靠前的磁力連接可用度比較高app
#-*- coding:utf-8 -*- import xml.etree.ElementTree as ET import requests import json import urllib2 from lxml import etree #獲取搜索結果的方法 def getUrl(key): url='https://www.torrentso.com/s/'+key+'/' html_content = requests.get(url).content html = etree.HTML(html_content) titles = html.xpath('//div[@class="bt_list"]/a/@title') urls = html.xpath('//div[@class="bt_list"]/a/@href') #初始化變量值 i = 0 replytext ='' result=[] for i in range(0,6): downurl = getDown(urls[i]) result.append(titles[i]) result.append(downurl) replytext = replytext + '\n'+ titles[i]+'\n'+urls[i]+'\n' #print downurl i+=1 return replytext #獲取磁力連接的方法 def getDown(url): html_content = requests.get(url).content html = etree.HTML(html_content) downurl = html.xpath('//div[@id="hash_newdown"]/textarea') return downurl[0].text