鱼C论坛

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

爬虫中遇到的问题

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

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

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

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

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

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

使用道具 举报

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

if __name__ == "__main__":
        headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56 "
    }
    url = "https://pic.netbian.com/4kmeinv/"
    response = requests.get(url = url, headers = headers).text
    # print(response)
    tree = etree.HTML(response)
    part_url = tree.xpath('//ul[@class="clearfix"]//img/@src')  #
    for a in part_url: # 这里的a无论取什么变量名都会提示前面已经定义,并且这段for语句会没作用,但不报错
       a = "https://pic.netbian.com" + a
以上为全部代码...
然后idle中会有个警告
描述为:
已重新声明上文定义的无用法的 'a'
检查信息: This inspection detects unconditional redeclarations of names without being used in between, like this:
def x(): pass
x = 2
It applies to function and class declarations, and top-level assignments.
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)就会报错
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
没有报错,你的代码是不是混入了别的字符什么的。
已重新声明上文定义的无用法的 'a'
检查信息: This inspection detects unconditional redeclarations of names without being used in between, like this:
def x(): pass
x = 2
It applies to function and class declarations, and top-level assignments.
a: Any
这段不是程序报错,而是idle中黄色警告的具体描述,我自己去看具体怎么回事的...我粘贴了原文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 22:50:45 | 显示全部楼层
suchocolate 发表于 2021-5-20 22:44
没有报错,你的代码是不是混入了别的字符什么的。
for a in part_url:
 a = "https://pic.netbian.com" + a
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-6-16 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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