Python爬蟲與一汽項目【三】爬取中國五礦集團採購平臺

網站地址:http://ec.mcc.com.cn/b2b/web/two/indexinfoAction.do?actionType=showMoreCgxx&xxposition=cgxxhtml

原本覺得這是個老老實實的get請求,誰知道在翻頁的時候發現提交請求的方式是post,python

好在首頁用get方式能夠輕鬆獲取到html源碼,沒有像以前的東方電氣那麼煩人。web

在這裏採用了簡單的post提交方式,所以觀察翻頁便可發現,頁面的改變和FormData有關post

經過更改formdata中的currpage便可實現翻頁提交。網站

使用post方式時,數據放在data或者body中,不能放在url中,放在url中將被忽略。編碼

urllib2用一個Request對象來映射所提出的HTTP請求。url

經過請求的地址建立一個Request對象,code

經過調用urlopen並傳入Request對象,將返回一個相關請求response對象,orm

這個應答對象如同一個文件對象,因此要在Response中調用.read()htm

def get_one_page(url,data):

    try:

        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'
        }
        #將傳過來的data進行編碼,變成bytes格式的數據
        dataEncode = urllib.parse.urlencode(data).encode('utf-8')
        #獲取網頁響應內容,用到了urllib模塊
        request = urllib.request.Request(url=url, headers=headers,data=dataEncode)
        response = urllib.request.urlopen(request)
        #獲取應答對象
        return response.read().decode('utf-8')
    except RequestException:
        return None

  主方法中構造data

def main():

    url = "http://ec.mcc.com.cn/b2b/web/two/indexinfoAction.do?actionType=showMoreCgxx&xxposition=cgxx"
    #構造post表單所提交的數據
    data = {
        'currpage': 1,
        'xxposition': 'cgxx'
    }
    html = get_one_page(url,data)
    print(html)

  

接下來能夠經過循環構造最大頁數,並將最大頁傳給data,循環獲取每一頁的內容便可。

#直接修改data的value值便可
    for i in range(2,page_num+1):
        data['currpage'] = i
相關文章
相關標籤/搜索