python_爬虫_模块

Posted 龙道人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_爬虫_模块相关的知识,希望对你有一定的参考价值。

import pymysql
from urllib import request,parse
from urllib.error import HTTPError,URLError

def main(url,headers=None,data=None): # 调用函数
    if not data:
        return get_response(url,headers=headers)
    else:
        return get_response(url,headers=headers,data=data)

def get_response(url,data=None,headers=None):
    if not headers:
        headers = {User-Agent:get_agent()}
    try:
        if data:
            data = parse.urlencode(data)
            data = bytes(data,encoding=utf-8)
            req = request.Request(url, data=data, headers=headers)
        else:
            req = request.Request(url,headers=headers)
        response = request.urlopen(req)
        data = response.read().decode()
        return data # 返回数据

    except HTTPError as e: # 总的错误信息,不适合用于调试
        print(e)
    except URLError as e:
        print(e)

def get_agent(table=None): # 提前使用fake_useragent模块生成的请求头,存储在数据库中,避免出现问题无法调用fake_useragent模块
    table = p_useragent
    conn = pymysql.connect(127.0.0.1, root, 123456, PaChong, charset=utf8)
    cursor = conn.cursor() # 连接数据库,随机调用请求头
    sql = SELECT * FROM {} WHERE id >= ((SELECT MAX(Id) FROM {})-(SELECT MIN(Id) FROM {})) * RAND() + (SELECT MIN(Id) FROM p_useragent)  LIMIT 1.format(
        table, table, table)
    rwo = cursor.execute(sql)
    useragent = cursor.fetchall()[0][1]
    return useragent

if __name__ == __main__:
    url = http://fanyi.baidu.com/sug
    data = {kw:中国}
    import json
    res = json.loads(main(url,data=data))
    print(res)

    # url = ‘http://www.baidu.com‘
    # res = main(url)
    # print(res)

正常情况下,每写一个爬虫,都需要执行分析->请求->响应->下载(存储)的流程,但诸多功能,其实都是在重复造轮子,比如请求、调用请求头、post请求data值,可以将这些功能写到一个py文件里,这样再写其他爬虫文件时, 直接调用,就可以略过输入请求头、post传参转码等诸多操作。

以上是关于python_爬虫_模块的主要内容,如果未能解决你的问题,请参考以下文章

Python_01_IP代理池_实现代理池的爬虫模块的执行方法

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

Python网络爬虫-requests模块(II)

Python网络爬虫_Scrapy框架_2.logging模块的使用

Python爬虫_requests模块

python之路_day96_爬虫之requests模块补充