刚开始学爬虫,各种都还不是太熟
请问这种网页的数据应该如何爬
https://legacy.bas.ac.uk/met/READER/surface/stationpt.html
请指点一下
1
hongfeiyu OP 这个网站是不是有反爬虫机制啊,源代码并不能爬下来
|
2
lecher 2016-01-02 00:01:11 +08:00 via Android
晒请求代码,我随手拿 curl 都可以请求成功。
请求带上伪造的 header 参数。除非封 IP 否则爬虫是禁不掉的。 |
3
hongfeiyu OP @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 可以更容易分析数据 |
4
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 |