python爬虫類:新浪ニュースデータを這い出す


1.爬虫類のブラウザの偽装原理:
新浪ニュースのトップページを登ってみると、相手のサーバーが爬虫類を遮断するため、403に戻ることがわかります.この場合、ブラウザに偽装して登る必要があります.
1.実戦分析:
ブラウザの偽装は一般的にヘッダによって行われます.
Webページを開き、F 12-Network-任意のサイトを押すと、Headers-Request HeadersのキーワードUser-Agentが爬虫類かブラウザかを識別します.
import urllib.request

url='http://weibo.com/tfwangyuan?is_hot=1'
headers=('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
opener=urllib.request.build_opener()
opener.addheaders=[headers]
data=opener.open(url).read()

fh=open('F:/jupyterpycodes/python_pachongfenxi/result/        .html','wb')
fh.write(data)
fh.close()

import urllib.request

url1='http://www.icourse163.org/home.htm?userId=1396403034#/home/course'
headers1=('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
opener=urllib.request.build_opener()
opener.addheaders=[headers1]
data1=opener.open(url1).read()

fh=open('F:/jupyterpycodes/python_pachongfenxi/result/      .html','wb')
fh.write(data1)
fh.close()


3.ニュース爬虫類
3.1需要:
新浪ニュースのトップページ(http://news.sina.com.cn/)すべてのニュースが現地に
3.2考え方:
まずトップページに登り、正則ですべてのニュースリンクを取得し、各ニュースを順番に登ってからローカルに保存します.
import urllib.request
import re


data=urllib.request.urlopen('http://news.sina.com.cn/').read()
data2=data.decode('utf-8','ignore')
pat='href="(https://news.sina.com.cn/.*?)">'
allurl=re.compile(pat).findall(data2) #             
for i in range(0,len(allurl)):
    try:
        print(' '+str(i)+'   ')
        thisurl=allurl[i]
        file='F:/jupyterpycodes/python_pachongfenxi/result/sinanews/'+str(i)+'.html'
        urllib.request.urlretrieve(thisurl,file)
        print('——  ——')
    except urllib.error.URLError as e:
        if hasattr(e,'code'):
            print(e.code)
        if hasattr(e,'reason'):
            print(e.reason)

 0   
404
Not Found
 1   
——  ——
 2   
——  ——
 3   
——  ——
 4   
——  ——
 5   
——  ——
 6   
——  ——
 7   
——  ——
 8   
——  ——
 9   
——  ——
 10   
——  ——
 11   
——  ——
 12   
——  ——
 13   
——  ——
 14   
——  ——
 15   
——  ——
 16   
——  ——
 17   
——  ——
 18   
——  ——
 19   
——  ——
 20   
——  ——
 21   
——  ——
 22   
——  ——
 23   
——  ——
 24   
——  ——
 25   
——  ——
 26   
——  ——
 27   
——  ——
 28   
——  ——
 29   
——  ——
 30   
——  ——
 31   
——  ——
 32   
——  ——
 33   
——  ——
 34   
——  ——
 35   
——  ——
 36   
——  ——
 37   
——  ——
 38   
——  ——
 39   
——  ——
 40   
——  ——
 41   
——  ——
 42   
——  ——
 43   
——  ——
 44   
——  ——
 45   
——  ——
 46   
——  ——
 47   
——  ——
 48   
——  ——
 49   
——  ——
 50   
——  ——
 51   
——  ——
 52   
——  ——
 53   
404
Not Found
 54   
404
Not Found
 55   
404
Not Found
 56   
404
Not Found
 57   
404
Not Found
 58   
404
Not Found
 59   
404
Not Found
 60   
404
Not Found
 61   
404
Not Found
 62   
404
Not Found
 63   
404
Not Found
 64   
404
Not Found
 65   
404
Not Found
 66   
404
Not Found
 67   
404
Not Found
 68   
404
Not Found
 69   
404
Not Found
 70   
404
Not Found
 71   
404
Not Found
 72   
404
Not Found
 73   
404
Not Found
 74   
404
Not Found
 75   
404
Not Found
 76   
404
Not Found
 77   
404
Not Found
 78   
404
Not Found
 79   
404
Not Found
 80   
404
Not Found
 81   
404
Not Found
 82   
404
Not Found
 83   
404
Not Found
 84   
404
Not Found
 85   
404
Not Found
 86   
404
Not Found
 87   
404
Not Found
 88   
404
Not Found
 89   
404
Not Found
 90   
404
Not Found
 91   
404
Not Found
 92   
404
Not Found
 93   
404
Not Found
 94   
404
Not Found
 95   
404
Not Found
 96   
404
Not Found
 97   
404
Not Found
 98   
404
Not Found
 99   

`