真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

海城網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,海城網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為海城上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的海城做網(wǎng)站的公司定做!

這個項目總共分為兩步:

1.獲取所有帖子的鏈接:

將最近一個月內(nèi)的帖子鏈接保存到數(shù)組中

2.從回帖中搜索演員名字:

從數(shù)組中打開鏈接,翻出該鏈接的所有回帖,在回帖中查找演員的名字

獲取所有帖子的鏈接:

搜索的范圍依然是以虎撲影視區(qū)為界限?;溆耙晠^(qū)一天約5000個回帖,一月下來超過15萬回帖,作為樣本來說也不算小,有一定的參考價值。

完成這一步驟,主要分為以下幾步:

1.獲取當(dāng)前日期

2.獲取30天前的日期

3.記錄從第一頁往后翻的所有發(fā)帖鏈接

1.獲取當(dāng)前日期

這里我們用到了datetime模塊。使用datetime.datetime.now(),可以獲取當(dāng)前的日期信息以及時間信息。在這個項目中,只需要用到日期信息就好。

2.獲取30天前的日期

用datetime模塊的優(yōu)點在于,它還有一個很好用的函數(shù)叫做timedelta,可以自行計算時間差。當(dāng)給定參數(shù)days=30時,就會生成30天的時間差,再用當(dāng)前日期減去delta,可以得到30天前的日期,將該日期保存為startday,即開始進(jìn)行統(tǒng)計的日期。不然計算時間差需要自行考慮跨年閏年等因素,要通過一個較為復(fù)雜的函數(shù)才可以完成。

today = datetime.datetime.now()
delta = datetime.timedelta(days=30)
i = "%s" %(today - delta)
startday = i.split(' ')[0]
today = "%s" %today
today = today.split(' ')[0]

在獲得開始日期與結(jié)束日期后,由于依然需要記錄每一天每個人的討論數(shù),根據(jù)這兩個日期生成兩個字典,分別為actor1_dict與actor2_dict。字典以日期為key,以當(dāng)日討論數(shù)目作為value,便于每次新增查找記錄時更新對應(yīng)的value值。

strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime
days = (strptime(today, "%Y-%m-%d") - strptime(startday, "%Y-%m-%d")).days
for i in range(days+1):
temp = strftime(strptime(startday, "%Y-%m-%d") + datetime.timedelta(i), "%Y-%m-%d")
actor1_dict[temp] = 0
actor2_dict[temp] = 0

3.記錄從第一頁往后翻的所有發(fā)帖鏈接

Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字

​如圖1所示,采用發(fā)帖順序排列,可以得到所有的發(fā)帖時間(精確到分鐘)。右鍵并點擊查看網(wǎng)頁源代碼,可以發(fā)現(xiàn)當(dāng)前帖子的鏈接頁面,用正則表達(dá)式的方式抓取鏈接。

首先依然是獲取30天前的日期,再抓取第i頁的源代碼,用正則表達(dá)式去匹配,獲取網(wǎng)頁鏈接和發(fā)帖時間。如圖2所示:

Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字

比較發(fā)帖時間,如果小于30天前的日期,則獲取發(fā)帖鏈接結(jié)束,返回當(dāng)前拿到的鏈接數(shù)組,代碼如下

def all_movie_post(ori_url):
  i = datetime.datetime.now()
  delta = datetime.timedelta(days=30)
  i = "%s" %(i - delta)
  day = i.split(' ')[0] # 獲得30天前的日子
  print day
 
  user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
  headers = { 'User-Agent' : user_agent }
 
  post_list = []
  for i in range(1,100):
    request = urllib2.Request(ori_url + '-{}'.format(i),headers = headers)
    response = urllib2.urlopen(request)
    content = response.read().decode('utf-8')
    pattern = re.compile('.*?(.*?)', re.S)
    items = re.findall(pattern,content)
    for item in items:
      if item[1] == '2011-09-16':
        continue
      if item[1] > day: #如果是30天內(nèi)的帖子,保存
        post_list.append('https://bbs.hupu.com' + item[0])
      else: #如果已經(jīng)超過30天了,就直接返回
        return post_list
  return post_list

分享名稱:Python如何實現(xiàn)爬蟲抓取論壇關(guān)鍵字-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/dsscpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部