python爬虫之requests

作者: 浪花生 | 来源:发表于2017-11-06 20:03 被阅读0次

    环境:windows10+python3.5

    安装lxml解析:pip install lxml

    安装requests库:pip install requests


    一个简单的爬虫

    import requests

    r=requests.get("http://www.baidu.com")

    r.encoding="utf-8"

    print(r.text)

    逐行解读代码:

    - import requests

    引入requests库,这是实现requests爬虫的基础

    - requests.get()

    放入url,就会返回一个response对象,包含了网页的内容、状态等信息,需要注意的是url必须带上“http://”

    - 将其字符编码转换为utf-8格式『推荐这样的编码,不然很容易出现乱码的问题』

    - 显示响应的文本内容,用utf-8编码后就可以显示中文字符

    ## 完善爬虫

    ```

    import requests

    url='http://www.baidu.com'

    r = requests.get(url)

    r.raise_for_status()

    print(r.status_code)

    r.encoding=r.apparent_encoding

    print(r.text)

    ```

    - r.raise_for_status()

    用于获取状态码,如果网址错误会抛出异常的信息

    - r.status_code

    就是响应体内的状态码信息,可以用print函数展示出来

    - r.encoding=r.apparent_encoding

    将响应的编码改变为网页用的编码,如果网站内容有中文字符,那么直接使用他的编码就可以展示中文的内容了

    ## 带参数的爬虫

    ```

    import requests

    kv={'value':"keyword"}

    ua ={'user-agent':'123'}

    url="http://httpbin.org/get"

    try:

    r=requests.get(url,params=kv,headers=ua)

    r.encoding=r.apparent_encoding

    print(r.text)

    except:

    print('error')

    ```

    通过分析响应的内容,就可以看到我们传入的参数了

    >"args": {"value": "keyword"}

    另外,我们通过设定headers,改变了useragent信息,所以我们可以看到响应的以下信息

    >"User-Agent": "123"

    通过设定user-agent,我们可以改变用户浏览器等信息,防止某些网站根据这个内容判断我们是否为爬虫

    ## 查找ip地址的小例子

    beautifulsoup是一个非常方便的html解析工具

    我们通过它可以解析查找我们想要的内容

    >安装:pip install beautifulsoup

    ```

    import requests

    from bs4 import BeautifulSoup

    ip=input()

    url='http://m.ip138.com/ip.asp?ip='+ip

    r=requests.get(url)

    obs=BeautifulSoup(r.text,"html.parser")

    q=obs.find_all('p')[-1].get_text()

    a=str(q).split(':')[-1]

    print(a)

    ```

    from bs4 import BeautifulSoup先引入bs库

    通过input()输入ip地址,传入url里

    obs=BeautifulSoup(r.text,"html.parser")建立一个beautifulsoup的对象

    q=obs.find_all('p')[-1].get_text()

    找出最后的p标签并获取内容

    a=str(q).split(':')[-1]

    因为内容是用:分开的

    我们获取内容的最后一个用:分开的内容

    **我们如何从响应中解析出来自己需要的内容呢**

    **这就需要学习bs、正则、xpath等内容了**

    相关文章

      网友评论

        本文标题:python爬虫之requests

        本文链接:https://www.haomeiwen.com/subject/hefrmxtx.html