鱼C论坛

 找回密码
 立即注册
查看: 4630|回复: 12

爬虫中遇到的问题

[复制链接]
发表于 2021-5-20 13:50:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 白本羽 于 2021-5-20 13:55 编辑
  1. import requests
  2. from lxml import etree
  3. import os

  4. if __name__ == "__main__":
  5.         headers = {
  6.         "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
  7.                       "Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56 "
  8.     }
  9.     url = "https://pic.netbian.com/4kmeinv/"
  10.     response = requests.get(url = url, headers = headers).text
  11.     # print(response)
  12.     tree = etree.HTML(response)
  13.     part_url = tree.xpath('//ul[@class="clearfix"]//img/@src')  #
  14.     for a in part_url: # 这里的a无论取什么变量名都会提示前面已经定义,并且这段for语句会没作用,但不报错[code]已重新声明上文定义的无用法的 'a'
  15. 检查信息: This inspection detects unconditional redeclarations of names without being used in between, like this:
  16. def x(): pass
  17. x = 2
  18. It applies to function and class declarations, and top-level assignments.
  19. a: Any
复制代码

        a = "https://pic.netbian.com" + a[/code]

用的idle是pycharm,但是我在当前py文件前面并没有声明任何相同的变量名,当我切换窗口时,换回来有可以用了,然后又不能用了......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-20 20:02:56 | 显示全部楼层
把全代码发出来,格式整齐一点,报错可以写在代码块的外面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-20 20:52:12 | 显示全部楼层
  1. import requests
  2. from lxml import etree

  3. if __name__ == "__main__":
  4.     headers = {
  5.         "user-agent": "Mozilla/5.0"
  6.     }
  7.     url = "https://pic.netbian.com/4kmeinv/"
  8.     response = requests.get(url = url, headers = headers).text
  9.     tree = etree.HTML(response)
  10.     part_url = tree.xpath('//ul[@class="clearfix"]//img/@src')
  11.     for url_ in part_url:
  12.         url = 'https://pic.netbian.com' + url_
  13.         print(url)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:26:40 | 显示全部楼层
suchocolate 发表于 2021-5-20 20:02
把全代码发出来,格式整齐一点,报错可以写在代码块的外面。
  1. import requests
  2. from lxml import etree
  3. import os

  4. if __name__ == "__main__":
  5.         headers = {
  6.         "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
  7.                       "Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56 "
  8.     }
  9.     url = "https://pic.netbian.com/4kmeinv/"
  10.     response = requests.get(url = url, headers = headers).text
  11.     # print(response)
  12.     tree = etree.HTML(response)
  13.     part_url = tree.xpath('//ul[@class="clearfix"]//img/@src')  #
  14.     for a in part_url: # 这里的a无论取什么变量名都会提示前面已经定义,并且这段for语句会没作用,但不报错
  15.        a = "https://pic.netbian.com" + a
复制代码

以上为全部代码...
然后idle中会有个警告
描述为:
  1. 已重新声明上文定义的无用法的 'a'
  2. 检查信息: This inspection detects unconditional redeclarations of names without being used in between, like this:
  3. def x(): pass
  4. x = 2
  5. It applies to function and class declarations, and top-level assignments.
  6. a: Any
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:29:32 | 显示全部楼层

用a和用url_有什么区别吗...为什么用a或者其它变量名就会出现警告,并使得for语句无效
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:33:03 | 显示全部楼层
本帖最后由 白本羽 于 2021-5-20 22:34 编辑
suchocolate 发表于 2021-5-20 20:02
把全代码发出来,格式整齐一点,报错可以写在代码块的外面。


没有报错!!!只是for语句不起作用,相当于注释掉了,存在但不执行了(或者其它什么解释),但如果在for语句里面加print(each)就会报错
  1. This inspection detects names that should resolve but don't
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-20 22:36:43 | 显示全部楼层
白本羽 发表于 2021-5-20 22:33
没有报错!!!只是for语句不起作用,相当于注释掉了,存在但不执行了(或者其它什么解释),但如果在for语句里 ...

令人迷惑的缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:39:45 | 显示全部楼层

这个缩进没问题,可能发上来的时候我是用空格按的,没法用tab键,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:40:46 | 显示全部楼层
白本羽 发表于 2021-5-20 22:39
这个缩进没问题,可能发上来的时候我是用空格按的,没法用tab键,

另一个具体代码回复还在审核中,,,不知道为啥,是我太像机器人了.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-20 22:44:44 | 显示全部楼层
白本羽 发表于 2021-5-20 22:39
这个缩进没问题,可能发上来的时候我是用空格按的,没法用tab键,

Screenshot 2021-05-20 224354.jpg
没有报错,你的代码是不是混入了别的字符什么的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:48:02 | 显示全部楼层
suchocolate 发表于 2021-5-20 22:44
没有报错,你的代码是不是混入了别的字符什么的。
  1. 已重新声明上文定义的无用法的 'a'
  2. 检查信息: This inspection detects unconditional redeclarations of names without being used in between, like this:
  3. def x(): pass
  4. x = 2
  5. It applies to function and class declarations, and top-level assignments.
  6. a: Any
复制代码

这段不是程序报错,而是idle中黄色警告的具体描述,我自己去看具体怎么回事的...我粘贴了原文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:50:45 | 显示全部楼层
suchocolate 发表于 2021-5-20 22:44
没有报错,你的代码是不是混入了别的字符什么的。
  1. for a in part_url:
  2. a = "https://pic.netbian.com" + a
  3. print(part_url)
复制代码


我只是想加个网页前缀啊,我打印出来的是未加前缀的网址...相当于for语句没用了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-21 22:58:30 | 显示全部楼层
headers 缩进问题
猎豹截图20210521225519.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 08:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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