请教一个 python 爬虫的问题

2016-01-01 22:19:19 +08:00
 hongfeiyu

刚开始学爬虫,各种都还不是太熟
请问这种网页的数据应该如何爬
https://legacy.bas.ac.uk/met/READER/surface/stationpt.html
请指点一下

2159 次点击
所在节点    Python
5 条回复
hongfeiyu
2016-01-01 22:40:38 +08:00
这个网站是不是有反爬虫机制啊,源代码并不能爬下来
lecher
2016-01-02 00:01:11 +08:00
晒请求代码,我随手拿 curl 都可以请求成功。
请求带上伪造的 header 参数。除非封 IP 否则爬虫是禁不掉的。
hongfeiyu
2016-01-02 07:40:56 +08:00
@lecher
我已经自己写了一个
#-*-coding:utf8-*-
import requests
import re

#把网页名存进数组
# <a href ="Deception.00.temperature.html">00Z </a> 00 06 12 18
#按网页开始循环,每次新建一个同名的 txt ,
# <tr><th><h5> 1962</h5><th><h5>是表头
# <th><h5><font color = black> -8.8<i>是数据

html = requests.get('https://legacy.bas.ac.uk/met/READER/surface/stationpt.html')
#print html.text
site = re.findall('<a href ="(.*?)">',html.text,re.S)
for each in site:
print '正在分析子站点',each
f=open(each,'a')
small=requests.get('https://legacy.bas.ac.uk/met/READER/surface/'+each)
# data=re.findall('<th><h5><font color = black>(.*?)<i>',small.text,re.S)
# for each in data:
f.writelines(small.text)
f.close()

我发现直接把网页扒下来还好用一些
因为表格可以直接复制进 execl
可以更容易分析数据
tonyrft
2016-01-02 09:19:55 +08:00
解析 html 请使用 Beautifulsoup


import requests
from bs4 import BeautifulSoup


response = requests.get('https://legacy.bas.ac.uk/met/READER/surface/stationpt.html')
soup = BeautifulSoup(response.content, 'lxml')
for subPage in soup.find_all('a'):
html = requests.get(''.join(('https://legacy.bas.ac.uk/met/READER/surface/', subPage['href']))).text

不算空格一共 6 行
建议使用第三方库直接写入 excel
lx9921
2016-01-02 11:04:24 +08:00
@hongfeiyu 和 2 楼说的一样,单纯的 request 恐怕不行,需要带上 header 参数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/247723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX