python爬蟲問題!線上等解答!

來源:互聯網
上載者:User
關鍵字 python php mysql sql sqlserver
我已經爬取了coursera上所有課程的url,放在了all_url.txt 檔案中,大概2000多行。
然後我想用這些url爬取其他我想要的資訊,合成一個.csv以方便匯入資料庫。
在以下的代碼裡,我唯寫了幾項我想要爬取的內容來測試能否實現(如爬取課程時間表等五項我需要的資訊還沒有寫入代碼中),但是在sublime中control+b 之後,雖不報錯,但是無法抓取任何內容,只能建立csv檔案。

如果能找到漏洞,小弟還有一個問題,就是是不是迴圈次數太多了,第一層迴圈就2000層,裡面大概每個次級for迴圈還有10層吧,應該怎麼最佳化呢。。。

求大神指教!thx

***代碼如下***#!usr/bin/python# -*- coding:utf-8 -*-import sys;import osimport urllib import requestsimport csvfrom bs4 import BeautifulSoupreload(sys);sys.setdefaultencoding("utf8")f = open("all_url.txt","r")lines = f.readlines()for line in lines:    html = urllib.urlopen(line)    content = html.read()    html.close()    soup = BeautifulSoup(content)            all_coursename = soup.find_all('h2', class_="color-primary-text headline-1-text flex-1")    COURSENAME = []    for coursename in all_coursename:        COURSENAME.append(coursename)            all_courseins = soup.find_all(class_="text-light offering-partner-names")        COURSEINSTITUTION = []        for courseins in all_courseins:        COURSEINSTITUTION.append(courseins)                all_courseurl = soup.find_all('a', class_="rc-OfferingCard nostyle")        COURSEURL = []    for courseurl in all_courseurl:        COURSEURL.append(courseurl)        csvfile = file('all_info.csv', 'wb')    writer = csv.writer(csvfile)    writer.writerow(['COURSE_NAME', 'COURSE_INSTITUTION', 'COURSE_URL'])        for i in range (0,len(COURSENAME)):        data = [          (COURSENAME[i], COURSEINSTITUTION[i], COURSEURL[i])        ]                writer.writerows(data)        csvfile.close()

回複內容:

我已經爬取了coursera上所有課程的url,放在了all_url.txt 檔案中,大概2000多行。
然後我想用這些url爬取其他我想要的資訊,合成一個.csv以方便匯入資料庫。
在以下的代碼裡,我唯寫了幾項我想要爬取的內容來測試能否實現(如爬取課程時間表等五項我需要的資訊還沒有寫入代碼中),但是在sublime中control+b 之後,雖不報錯,但是無法抓取任何內容,只能建立csv檔案。

如果能找到漏洞,小弟還有一個問題,就是是不是迴圈次數太多了,第一層迴圈就2000層,裡面大概每個次級for迴圈還有10層吧,應該怎麼最佳化呢。。。

求大神指教!thx

***代碼如下***#!usr/bin/python# -*- coding:utf-8 -*-import sys;import osimport urllib import requestsimport csvfrom bs4 import BeautifulSoupreload(sys);sys.setdefaultencoding("utf8")f = open("all_url.txt","r")lines = f.readlines()for line in lines:    html = urllib.urlopen(line)    content = html.read()    html.close()    soup = BeautifulSoup(content)            all_coursename = soup.find_all('h2', class_="color-primary-text headline-1-text flex-1")    COURSENAME = []    for coursename in all_coursename:        COURSENAME.append(coursename)            all_courseins = soup.find_all(class_="text-light offering-partner-names")        COURSEINSTITUTION = []        for courseins in all_courseins:        COURSEINSTITUTION.append(courseins)                all_courseurl = soup.find_all('a', class_="rc-OfferingCard nostyle")        COURSEURL = []    for courseurl in all_courseurl:        COURSEURL.append(courseurl)        csvfile = file('all_info.csv', 'wb')    writer = csv.writer(csvfile)    writer.writerow(['COURSE_NAME', 'COURSE_INSTITUTION', 'COURSE_URL'])        for i in range (0,len(COURSENAME)):        data = [          (COURSENAME[i], COURSEINSTITUTION[i], COURSEURL[i])        ]                writer.writerows(data)        csvfile.close()

第一層擷取URL 頁面 用thread 模組,後面第二層for的直接extend 列表就好了,最後不要頻繁開啟關閉檔案寫入 先把結果存起來 最後一次寫入檔案

檢查一下open mode =wb是怎麼定義的

使用'W',檔案若存在,首先要清空,然後(重新)建立

一步步調試下,看問題出在哪裡,可能從html中篩選出你要的資訊出錯了或者篩選不出來,都有可能

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.