鱼C论坛

 找回密码
 立即注册
查看: 1529|回复: 2

[已解决]新手求助,写了个爬虫代码但是没有结果,怎么确定自己被拦截了?

[复制链接]
发表于 2023-10-26 15:03:09 | 显示全部楼层 |阅读模式

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

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

x
import requests
import bs4
def open_url(url):
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'}
    res = requests.get(url,headers = headers)
    return res

def main():
    url = 'https://mobile.anjuke.com/fangjia/quanguo2022/'
    res = open_url(url)
    with open('2022年房价.text','w',encoding='utf-8') as f:
        f.write(res.text)

        

if __name__ == '__main__':
    main()


这个最后没有文件,我怀疑是被反爬虫了,但是不知道怎么确认
最佳答案
2023-10-26 15:03:33
确定是否被反爬虫可以通过以下步骤进行确认:

1. 检查网页访问状态码:在使用requests.get()方法后,可以打印res.status_code来查看请求的状态码。如果状态码是200,表示请求成功;而其他状态码可能指示了反爬虫措施(如403禁止访问)。

2. 查看请求返回的内容:使用print(res.text)来查看请求返回的内容。如果没有获取到有效的数据,或者返回的内容与预期不符,那么可能存在反爬虫机制。

3. 模拟浏览器行为:尝试模拟浏览器的操作,比如设置更完善的请求头信息。你已经在代码中设置了一个简单的请求头,但有些网站可能需要更多的请求头字段才能正常访问。你可以尝试添加其他常见的浏览器请求头字段,如RefererAccept-Language等,或者使用网络抓包工具(如Fiddler、Wireshark)来查看浏览器与目标网站之间的交互。

4. 使用代理IP:尝试使用代理IP进行请求。有时候,频繁的请求可能导致被封禁或限制访问,通过使用代理IP可以换个IP地址进行尝试,绕过一些反爬虫限制。

5. 分析网站的反爬虫机制:仔细观察目标网站的页面结构和请求过程,可能会发现一些反爬虫的特征。例如,网站可能设置了验证码、限制访问频率、使用JavaScript动态加载内容等。分析这些特征可以帮助你调整爬虫代码以克服反爬虫机制。

需要注意的是,在进行任何爬取操作时,请确保遵守相关网站的使用条款和规定,并尊重网站的隐私政策。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-26 15:03:18 | 显示全部楼层
你的怀疑是正确的,你的代码可能被网站的反爬虫机制拦截了。要确认是否被拦截,你可以尝试以下方法:

1. 检查返回的状态码:在 res 对象上使用 status_code 属性可以获取请求的状态码。如果状态码是200,则表示请求成功;如果是其他的状态码(如403或429),则表示请求被拦截。

2. 查看返回的内容:你可以在调试代码时打印 res.text 来查看返回的内容。如果返回的内容是反爬虫页面或包含了反爬虫的提示信息,那么你的请求可能被拦截了。

3. 尝试使用代理:你可以尝试使用代理服务器发送请求。使用代理可以隐藏你的真实IP地址,从而绕过一些常规的反爬虫策略。你可以在 requests.get 方法中添加 proxies 参数来指定代理服务器的地址和端口。

4. 修改请求头信息:有些网站会通过检查请求头信息来判断是否是爬虫。你可以尝试修改 headers 字典中的一些字段,如 User-Agent ,来模拟浏览器发送的请求。

需要注意的是,使用爬虫访问网站时要遵守网站的规则和政策,不要过于频繁地发送请求,以免给网站带来负担或触发反爬虫机制。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-26 15:03:33 | 显示全部楼层    本楼为最佳答案   
确定是否被反爬虫可以通过以下步骤进行确认:

1. 检查网页访问状态码:在使用requests.get()方法后,可以打印res.status_code来查看请求的状态码。如果状态码是200,表示请求成功;而其他状态码可能指示了反爬虫措施(如403禁止访问)。

2. 查看请求返回的内容:使用print(res.text)来查看请求返回的内容。如果没有获取到有效的数据,或者返回的内容与预期不符,那么可能存在反爬虫机制。

3. 模拟浏览器行为:尝试模拟浏览器的操作,比如设置更完善的请求头信息。你已经在代码中设置了一个简单的请求头,但有些网站可能需要更多的请求头字段才能正常访问。你可以尝试添加其他常见的浏览器请求头字段,如RefererAccept-Language等,或者使用网络抓包工具(如Fiddler、Wireshark)来查看浏览器与目标网站之间的交互。

4. 使用代理IP:尝试使用代理IP进行请求。有时候,频繁的请求可能导致被封禁或限制访问,通过使用代理IP可以换个IP地址进行尝试,绕过一些反爬虫限制。

5. 分析网站的反爬虫机制:仔细观察目标网站的页面结构和请求过程,可能会发现一些反爬虫的特征。例如,网站可能设置了验证码、限制访问频率、使用JavaScript动态加载内容等。分析这些特征可以帮助你调整爬虫代码以克服反爬虫机制。

需要注意的是,在进行任何爬取操作时,请确保遵守相关网站的使用条款和规定,并尊重网站的隐私政策。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 13:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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