• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-25) 17次浏览 已收录 0个评论
文章目录[隐藏]

我已经爬取了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 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-prima<div style="color:transparent">!本文来源gaodai.ma#com搞#代!码(网</div><em>搞gaodaima代码</em>ry-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>

回复内容:

我已经爬取了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 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()</code>

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

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

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python爬虫问题!在线等解答!

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址