Heim > Backend-Entwicklung > PHP-Tutorial > python爬虫问题!在线等解答!

python爬虫问题!在线等解答!

WBOY
Freigeben: 2016-06-06 20:11:14
Original
1552 Leute haben es durchsucht

我已经爬取了coursera上所有课程的url,放在了all_url.txt 文件中,大概2000多行。
然后我想用这些url爬取其他我想要的信息,合成一个.csv以方便导入数据库。
在以下的代码里,我只写了几项我想要爬取的内容来测试能否实现(如爬取课程时间表等五项我需要的信息还没有写入代码中),但是在sublime中control+b 之后,虽不报错,但是无法抓取任何内容,只能创建csv文件。

如果能找到漏洞,小弟还有一个问题,就是是不是循环次数太多了,第一层循环就2000层,里面大概每个次级for循环还有10层吧,应该怎么优化呢。。。

求大神指教!thx

<code>




***代码如下***

#!usr/bin/python
# -*- coding:utf-8 -*-

import sys;
import os
import urllib 
import requests
import csv

from bs4 import BeautifulSoup

reload(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()</code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

我已经爬取了coursera上所有课程的url,放在了all_url.txt 文件中,大概2000多行。
然后我想用这些url爬取其他我想要的信息,合成一个.csv以方便导入数据库。
在以下的代码里,我只写了几项我想要爬取的内容来测试能否实现(如爬取课程时间表等五项我需要的信息还没有写入代码中),但是在sublime中control+b 之后,虽不报错,但是无法抓取任何内容,只能创建csv文件。

如果能找到漏洞,小弟还有一个问题,就是是不是循环次数太多了,第一层循环就2000层,里面大概每个次级for循环还有10层吧,应该怎么优化呢。。。

求大神指教!thx

<code>




***代码如下***

#!usr/bin/python
# -*- coding:utf-8 -*-

import sys;
import os
import urllib 
import requests
import csv

from bs4 import BeautifulSoup

reload(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()</code>
Nach dem Login kopieren
Nach dem Login kopieren

第一层获取URL 页面 用thread 模块,后面第二层for的直接extend 列表就好了,最后不要频繁打开关闭文件写入 先把结果存起来 最后一次写入文件

检查一下open mode =wb是怎么定义的

使用'W',文件若存在,首先要清空,然后(重新)创建

一步步调试下,看问题出在哪里,可能从html中筛选出你要的信息出错了或者筛选不出来,都有可能

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage