楼主: 万人往LVR
3914 27

[统计软件与数据分析] 用python爬取一个网页源码 [推广有奖]

11
shaode01 学生认证  发表于 2015-8-13 23:16:29
为什么回复需要审核了?!!!

12
万人往LVR 在职认证  发表于 2015-8-14 15:35:03
bxshi 发表于 2015-8-12 22:46
明白了,这个问题是因为urllib不能好好处理302重定向导致的错误,你需要用requests包来抓数据。

代码如下 ...
谢谢。不过还是报错了,请问有别的解决方法吗?

13
万人往LVR 在职认证  发表于 2015-8-14 15:36:17
shaode01 发表于 2015-8-13 23:14
我错了,这跟参数貌似没有关系,我访问天猫首页是没有问题的
https://www.tmall.com/?spm=a1z10.5-b.0.0 ...
谢谢。请问有方法爬取这个页面吗?

14
bxshi 发表于 2015-8-15 01:51:36
万人往LVR 发表于 2015-8-14 15:35
谢谢。不过还是报错了,请问有别的解决方法吗?
你可以把错误贴上来吗?

15
bxshi 发表于 2015-8-15 01:54:03
万人往LVR 发表于 2015-8-14 15:35
谢谢。不过还是报错了,请问有别的解决方法吗?
你可能没有安装requests包?你需要用 pip install requests 来把requests这个python包装上。
如果还有问题请把错误信息也发上来吧。

16
万人往LVR 在职认证  发表于 2015-8-17 08:57:20
bxshi 发表于 2015-8-15 01:51
你可以把错误贴上来吗?
  1. >>> import requests
  2. >>> r = requests.get('https://asos.world.tmall.com/search.htm?spm=a1z10.5-b.w41-5044691060.102.QqiXRs')

  3. Warning (from warnings module):
  4.   File "C:\Python27\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 90
  5.     InsecurePlatformWarning
  6. InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

  7. Traceback (most recent call last):
  8.   File "<pyshell#1>", line 1, in <module>
  9.     r = requests.get('https://asos.world.tmall.com/search.htm?spm=a1z10.5-b.w41-5044691060.102.QqiXRs')
  10.   File "C:\Python27\lib\site-packages\requests\api.py", line 69, in get
  11.     return request('get', url, params=params, **kwargs)
  12.   File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request
  13.     response = session.request(method=method, url=url, **kwargs)
  14.   File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request
  15.     resp = self.send(prep, **send_kwargs)
  16.   File "C:\Python27\lib\site-packages\requests\sessions.py", line 573, in send
  17.     r = adapter.send(request, **kwargs)
  18.   File "C:\Python27\lib\site-packages\requests\adapters.py", line 431, in send
  19.     raise SSLError(e, request=request)
  20. SSLError: [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
复制代码
谢谢!

17
bxshi 发表于 2015-8-17 11:32:15
万人往LVR 发表于 2015-8-17 08:57
谢谢!
并不是很清楚python在windows下的使用,有两点可以试一下:
1) 将https改成http
2)返回的错误是个warning,能否查看一下r.text 是否有内容

18
万人往LVR 在职认证  发表于 2015-8-17 13:14:26
bxshi 发表于 2015-8-17 11:32
并不是很清楚python在windows下的使用,有两点可以试一下:
1) 将https改成http
2)返回的错误是个war ...
谢谢。你是mac系统?原本用R爬虫也是这个问题,mac能爬windows爬不了。你说的两种方案还是出错,而且不是warning,后面有个traceback。

19
万人往LVR 在职认证  发表于 2015-8-17 13:19:25
bxshi 发表于 2015-8-17 11:32
并不是很清楚python在windows下的使用,有两点可以试一下:
1) 将https改成http
2)返回的错误是个war ...
可不可以把你的header告诉我?想试一下会不会伪装mac的header就可以用了

20
shaode01 学生认证  发表于 2015-8-17 17:08:42
你可以试试代码里的其他链接,都没有错误,只有你要爬的这个页面报错
  1. import urllib2
  2. import urllib
  3. import re
  4. import socket
  5. import httplib
  6. import sys

  7. url='https://asos.tmall.com/search.htm'
  8. values={
  9.         'spm':'a1z10.5-b.w4011-5044691060.102.QqiXRs',
  10.         'search':'y',
  11.         'orderType':'defaultSort',
  12.         'pageNo':'2',
  13.         'tsearch':'y'   
  14.         }
  15. data=urllib.urlencode(values)
  16. url=url+'?'+data
  17. url='https://detail.tmall.com/item.htm?spm=a1z10.5-b.w4011-5044691060.108.tFTsqy&id=521245233587&rn=36a17f1a4df6092dbc5daa6cf2ca7f99&abbucket=1'
  18. url='http://wuyouhuwai.taobao.com/search.htm?search=y&v=1'
  19. url='https://asos.tmall.com/search.htm?spm=a1z10.5-b.w4011-5044691060.102.QqiXRs&search=y&orderType=defaultSort&pageNo=2&tsearch=y#anchor'
  20. #url='https://asos.tmall.com/category.htm?spm=a1z10.5-b.w4010-5044691058.2.IHxn4N&search=y'
  21. #url='https://www.tmall.com/?spm=a1z10.5-b.0.0.gAVjBC'
  22. #request=urllib2.Request(url)

  23. #url='https://asos.tmall.com/search.htm?spm=a1z10.5-b.w4011-5044691060.102.QqiXRs&search=y&orderType=defaultSort&pageNo=2&tsearch=y'
  24. #url=urllib.quote_plus(url,safe=':\'/?&=()')
  25. headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER'                }
  26. request = urllib2.Request(url,headers)


  27. try:
  28.     response = urllib2.urlopen(url)
  29.     html=response.read()
  30.     print html
  31. except urllib2.URLError,e:
  32.     print e.reason
复制代码

The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Found
Python2.7.5,Windows7

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-26 10:09