Python爬虫编程常见问题解决方法

1.通用的解决方案:

【按住Ctrl键不送松】,同时用鼠标点击【方法名】,查看文档

2.TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.

问题描述:【类型错误】就是数据的类型应该是bytes类型,而不是str类型
解决方案:

data = data.encode('utf-8')

3.爬取得到的HTML在一行显示

调试步骤:通过print(type(html))查看html的类型, 可以查出是bytes类型,就需要解码
解决方案:

html = html.decode()

4.有时候使用爬虫会被网站封了IP,所以需要去模拟浏览器

解决方案:

header = {"User-Agent": "mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}
req = request.Request(url=base_url,data=bytes(data,encoding='utf-8'),headers=header)

5.当服务器返回json格式的数据乱码

调试步骤:
1.通过print(type(json_data))查看数据的类型,
2.可以查出是str类型,就是说返回的字符串中有bytes类型的数据
解决方案:把json字符串转换为字典

json_data = json.loads(json_data)

6.怎么只输出json数据的value或者某个key对应的value,不要[{}]

问题描述: 想要jsonkey/value的一部分
典型案例:
例如:

 json_data=
      {'errno': 0,
       'data': [{'k': 'good',
                 'v': 'adj. 好的;'
                 },
                {'k': 'good morning',
                 'v': 'int. 早安;'
                 }
               ]
       }

要求: 只想要输出good: adj. 好的,而不要其他的格式
1.可以通过json_data['data'],只输出json数据json_data中‘data’对应的值,也就是

 [{'k': 'good',
   'v': 'adj. 好的;'
  },
  {'k': 'good morning',
   'v': 'int. 早安;'
  }
 ]

2.遍历输出每个'k'和'v'的值

# 遍历输出每个'k'和'v'的值
for item in json_data['data']:
      print(item['k'], ": ", item['v'])

7.返回的页面是一个链接,而不是链接的页面

问题描述: 百度搜索,我们输入搜索内容,返回的是一个包括原地址链接的html,而不是访问该链接 的html,且返回的html中:location.replace(location.href.replace("https://","http://"));
问题实例截图:
这里写图片描述
解决方案: 如果使用的是http改成https,
如果使用的是https改成http,就可以了
这里写图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我没有找到与python爬虫答辩相关的引用内容。但是,关于Python爬虫的一些常见问题和答案可能包括: 1. 什么是Python爬虫Python爬虫是一种利用Python编程语言编写的自动化程序,用于从网页或其他网络资源中提取数据。 2. Python爬虫的工作原理是什么? Python爬虫通过发送HTTP请求获取网页内容,然后使用解析库(如BeautifulSoup或Scrapy)来提取所需的数据。 3. Python有哪些常用的爬虫库? Python中有许多强大的爬虫库,包括BeautifulSoup、Scrapy、Requests等。 4. 爬虫爬取数据时是否需要获得网站的许可? 是的,爬虫在爬取数据之前需要遵守网站的爬虫协议,确保合法、合规地进行数据爬取。 5. 爬虫如何处理网站的反爬机制? 爬虫可以使用一些技术手段来绕过网站的反爬机制,如使用代理IP、设置请求头、模拟用户行为等。 这些是一些常见Python爬虫问题和答案,希望对你的答辩有所帮助。如果你有具体的问题或需要更多信息,请告诉我。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python爬虫面试 常见问题](https://blog.csdn.net/weixin_39970855/article/details/109984836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值