鱼C论坛

 找回密码
 立即注册
查看: 718|回复: 5

爬虫程序 报错

[复制链接]
发表于 2018-7-26 17:02:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在网上看到了一个教学爬取猫眼top100的简单视频 而且很认真的做了笔记 想好好学习研究一下
昨天这个程序运行成功了
但是不知道今天为什么就不行了
而且报的错我看不懂  
代码我反复看了好几遍感觉上是没有问题的?

麻烦大佬们帮助一下可怜的萌新   
代码如下:
  1. #导入模块
  2. import requests
  3. from lxml import etree
  4. import json
  5. from time import sleep

  6. #定义一个类
  7. class MaoYan(object):
  8.     '''用于下载猫眼电影Top100'''
  9. #初始化函数 构造函数(不需要调用就会自动执行)
  10. #在init中定义的self.xx可以在同一个类中的任何一个方法中使用即跨区域在其他函数中使用
  11.     def __init__(self):
  12.         self.header = {
  13.             'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}

  14.     def getOnePage(self,url):
  15.         #得到网页源代码
  16.         html = requests.get(url,headers=self.header).text
  17.         return html
  18.    
  19.     def  parseOnePage(self,text):
  20.         #解析网页
  21.         html = etree.HTML(text)
  22.         #提取电影名称 (//从当前任意节点进入p标签 [限定词]下的文本)
  23.         name = html.xpath('//p[@class="name"]//text()')
  24.         #print(name)
  25.         #提取主演
  26.         star = html.xpath('//p[@class="star"]/text()')
  27.         #print(star)

  28.         #生成器(返回一个字典)
  29.         for item in range(len(name)):

  30.             yield{
  31.                 'name':name[item],
  32.                 'star':star[item].strip()
  33.                 }
  34.             
  35.     @staticmethod   #静态方法   装饰器(必须了解闭包)  里面不可以引用其他方法但可以被其他方法引用(不推荐)
  36.     def save_File(content):
  37.                 with open('333.json', 'a', encoding='utf-8') as fp:
  38.                     fp.write(json.dumps(content,ensure_ascii=False)+'\n')

  39. #在本文件中name内置函数就等于main函数 如果被其他文件调用 则__name__函数以下的任何字段不执行

  40.    
  41. if __name__ == "__main__":
  42. #实例对象
  43.     maoyan = MaoYan()

  44. #进行循环
  45.     for offset in range(10):
  46.         
  47.         sleep(1)   #程序运行到这里时会暂停一秒

  48.         urls = 'http://maoyan.com/board/4?offset={0}'.format(offset*10)

  49. #调用
  50.         html = maoyan.getOnePage(urls)
  51.         text =  maoyan.parseOnePage(html)
  52.         
  53. #没有加括号 也不是调用对象
  54. #静态方法可以用类名直接调用,但是实例方法不行
  55. #字典高度兼容json文件
  56.         
  57.         for item in text:
  58.             print(item)
  59.             MaoYan.save_File(item)
复制代码


附上图片  跪求大佬解答:

看了pip 啥都有在啊

看了pip  啥都有在啊

报错的图 看到一个requests_methods 我以为我电脑给突然还原丢失了requests包

报错的图 看到一个requests_methods 我以为我电脑给突然还原丢失了requests包

昨天成功的截图 今天不知道为什么运行不了

昨天成功的截图 今天不知道为什么运行不了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-26 17:03:42 | 显示全部楼层
很难受  程序这么善变我就要从入门到放弃了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 18:53:21 | 显示全部楼层
  1. import requests
  2. from lxml import etree
  3. import json
  4. from time import sleep

  5. #定义一个类
  6. class MaoYan(object):
  7.     '''用于下载猫眼电影Top100'''
  8. #初始化函数 构造函数(不需要调用就会自动执行)
  9. #在init中定义的self.xx可以在同一个类中的任何一个方法中使用即跨区域在其他函数中使用
  10.     def __init__(self):
  11.         self.header = {
  12.             'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}

  13.     def getOnePage(self,url):
  14.         #得到网页源代码
  15.         html = requests.get(url,headers=self.header).text
  16.         return html
  17.    
  18.     def  parseOnePage(self,text):
  19.         #解析网页
  20.         html = etree.HTML(text)
  21.         #提取电影名称 (//从当前任意节点进入p标签 [限定词]下的文本)
  22.         name = html.xpath('//p[@class="name"]//text()')
  23.         #print(name)
  24.         #提取主演
  25.         star = html.xpath('//p[@class="star"]/text()')
  26.         #print(star)

  27.         #生成器(返回一个字典)
  28.         for item in range(len(name)):

  29.             yield{
  30.                 'name':name[item],
  31.                 'star':star[item].strip()
  32.                 }
  33.             
  34.     @staticmethod   #静态方法   装饰器(必须了解闭包)  里面不可以引用其他方法但可以被其他方法引用(不推荐)
  35.     def save_File(content):
  36.                 with open('333.json', 'a', encoding='utf-8') as fp:
  37.                     fp.write(json.dumps(content,ensure_ascii=False)+'\n')

  38. #在本文件中name内置函数就等于main函数 如果被其他文件调用 则__name__函数以下的任何字段不执行

  39.    
  40. if __name__ == "__main__":
  41. #实例对象
  42.     maoyan = MaoYan()

  43. #进行循环
  44.     for offset in range(10):
  45.         
  46.         sleep(1)   #程序运行到这里时会暂停一秒

  47.         urls = 'http://maoyan.com/board/4?offset={0}'.format(offset*10)

  48. #调用
  49.         html = maoyan.getOnePage(urls)

  50. #没有加括号 也不是调用对象
  51. #静态方法可以用类名直接调用,但是实例方法不行
  52. #字典高度兼容json文件
  53.         
  54.         for item in maoyan.parseOnePage(html):
  55.             print(item)
  56.             MaoYan.save_File(item)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 09:16:19 | 显示全部楼层

还是不行。。会不会是我的扩展包坏了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 09:17:05 | 显示全部楼层

Traceback (most recent call last):
  File "C:\Users\admin\Desktop\123.py", line 58, in <module>
    html = maoyan.getOnePage(urls)
  File "C:\Users\admin\Desktop\123.py", line 17, in getOnePage
    html = requests.get(url,headers=self.header).text
  File "C:\Users\admin\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\adapters.py", line 445, in send
    timeout=timeout
TypeError: urlopen() missing 1 required positional argument: 'request_method'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 15:48:33 | 显示全部楼层
帖子别沉啊。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-1 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表