欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬虫抓取信息-urllib

程序员文章站 2022-05-04 11:49:38
...

自己晚上写的 本来抓取的是汇率 没写完 唉 路还长 继续走

import requests
import urllib.request
import urllib.request
import re
import datetime


def get_headers():
    '''定义请求头 换着请求头进行爬取'''
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
    }
    return headers
def get_ip():
    '''代理ip 换着地址进行爬取信息'''
    pass

def grab_info():
    '''抓取地址'''
    url = 'http://fx.cmbchina.com/hq/'
    return url
def get_url_address(url):
    '''处理请求地址,或者翻页
    返回的信息可以是json数据
    使用代理ip时要跟换方法使用 可以提前写好
    '''
    headers = get_headers()
    request = urllib.request.Request(url, headers=headers)
    return request

proxy_handler = urllib.request.ProxyHandler({'http': '120.32.208.16:8118'})
opener = urllib.request.build_opener(proxy_handler)


def get_html(request):
    '''进行响应,获取数据'''
    repsonse = urllib.request.urlopen(request)
    html = repsonse.read().decode('utf-8')
    return html
def handle_data(html):
    '''利用xpath re 进行解析'''
    need_data = dict()

    print(html)


def need_info():
    '''存储数据 可以存入表格等 重新调取数据'''
    pass

def main():
    '''主程序 可以设置死循环 来进行不断抓取数据'''
    url = grab_info()
    request = get_url_address(url=url)
    html = get_html(request =request)
    handle_data(html = html)


if __name__ == '__main__':
    start_time = datetime.datetime.now()
    main()
    end_time = datetime.datetime.now()
    print('爬取时间{time}'.format(time = end_time-start_time))