Python爬虫爬数据相关问题解决

文章目录
  1. 1. 400 Bad Request
  2. 2. 中文乱码问题
  3. 3. ConnectionRefusedError: [WinError 10061]

打算系统的学习Python爬数据,期间遇到的相关问题会在这篇文章里进行相关整理,感谢阅读~

400 Bad Request

这个问题是以爬知乎一个问题(”你们高考当天发生了什么有趣的事?”)作为范例,起初我只是想测试一下会不会出现目标计算机积极拒绝的问题,有趣的是出现了400这个问题,问题代码如下:

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
#coding=utf-8

import requests

if __name__=="__main__":
url="https://www.zhihu.com/question/47194806/answer/499404598"
r=requests.get(url)
print(r.text)

我上网查了一下,后来我加上了一个浏览器模拟的headers,然后就顺利把数据get到了text,代码里面的user-agent就是浏览器。

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
#coding=utf-8

import requests

if __name__=="__main__":
url="https://www.zhihu.com/question/47194806/answer/499404598"
headers={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
r=requests.get(url,headers=headers)
print(r.text)

这里放几个常用的User-Agent(下次就直接复制粘贴了啊哈哈哈哈)~

FireFox

1
2
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0

Chrome

1
2
3
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

But到这里又出现了另外一个问题,中文乱码,OK,看下面。

中文乱码问题

接上,这里爬虫库使用的是requests,requests.get里面放上url和headers,但是最后结果里面的text里面中文是乱码,解决这个问题只需要在输出前加上一行代码:

1
r.decoding='utf-8'

加上这行代码问题就能顺利解决,下面是完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
#coding=utf-8

import requests

if __name__=="__main__":
url="https://www.zhihu.com/question/47194806/answer/499404598"
headers={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
r=requests.get(url,headers=headers)
r.decoding='utf-8'
print(r.text)

在Python 2.7里面可以使用下面的办法,由于我使用的Python版本是3.6,reload会报错:

1
2
3
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

ConnectionRefusedError: [WinError 10061]

Python自然语言处理那本书上(就是那本鲸鱼书)举的几个初始网络文本我一个都爬不下来,全部报的都是这个错误,令人绝望,不过好在讨厌的问题还是解决了啊哈哈哈~
解决的办法就是设置代理,proxies,而且代理里不需要写东西,设置为None即可,甚至不需要写headers,如下

1
2
3
4
proxies={
'http':None,
'https':None
}

完整版代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
#coding=utf-8

import requests

if __name__=="__main__":
url="http://www.gutenberg.org/files/2554/2554-0.txt"
proxies={
'http':None,
'https':None
}
raw=requests.get(url,proxies=proxies)
print(raw.text)