关于网络爬虫的的四个实例(爬取京东和亚马逊商品,百度搜索关键词,爬取一张图片)

这些天自己一直在学习python,看了好多视频,自己觉得爬虫最难的还是编码问题数据清洗这两个难点!关于字符编码的问题,有一篇文章写的挺好,推荐给大家:https://www.cnblogs.com/linhaifeng/articles/5950339.html,至于数据清洗的这个难点,大家要多练习练习爬取网页就能克服,大家和我一起努力吧!

首先准备是requests、bs4这两个库,利用这两个库,我们就可以爬取很多静态的网站,接下来我会给一些具体的例子给大家做下参考。

第一:爬虫的基本框架

import requests

def getHtml(url):
    try:
        reponse = requests.get(url)#发送请求并得到回应
        reponse.raise_for_status()#查看状态码 如果不是200则执行except
        reponse.encoding = reponse.apparent_encoding#将推测的编码方式用于编码
        return reponse.text#返回网页内容
    except:
        return "爬取失败"
    
if __name__ == "__main__":
    url = "http://www.baidu.com"
    page = getHtml(url)
    print(page)#把返回的网页内容给打印出来

这是最基本的爬虫框架,下面的例子全都是围绕爬虫的框架来展开的

第二:已知一个京东商品的url链接,爬取这个商品

import requests

def getHtml(url):
    try:
        reponse = requests.get(url)#发送请求并得到回应
        reponse.raise_for_status()#查看状态码 如果不是200则执行except
        reponse.encoding = reponse.apparent_encoding#将推测的编码方式用于编码
        return reponse.text#返回网页内容
    except:
        return "爬取失败"
    
if __name__ == "__main__":
    url = "https://item.jd.com/5029717.html"
    page = getHtml(url)
    print(page)#把返回的网页内容给打印出来

这个例子和第一个例子差不多,大家一看就懂的。

第三:爬取亚马逊的商品

这个例子的关键点就在于亚马逊这个网站会识别你是用爬虫来爬取他的网页的,因此亚马逊会组织你爬取网页,所以我们可以修改我们爬虫的headers就可以爬取了。

import requests

def getHtml(url):
    try:
        kv = {"user-agent": "Mozilla/5.0"}#加上这一句话就行了
        reponse = requests.get(url,headers = kv)#发送请求并得到回应
        reponse.raise_for_status()#查看状态码 如果不是200则执行except
        reponse.encoding = reponse.apparent_encoding#编码方式
        return reponse.text#返回网页内容
    except:
        return "爬取失败"

if __name__ == "__main__":
    url = "https://www.amazon.c" \
          "n/gp/product/B07HB3QBRW/ref=s9_acss_bw_cg_1027" \
          "DOTD_1b1_w?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-top-4&p" \
          "f_rd_r=2NXCA0JV962S4YCEY0Y2&pf_rd_t=101&pf_rd_p=1da1ff14-b1e1-448a-98b6-0ca893f" \
          "01cf6&pf_rd_i=1986781071"

    page = getHtml(url)
    print(page)#把返回的网页内容给打印出来

以后大家在爬取网页的时候,尽量加上上面的那一行代码headers,这样要爬的网站就不会抵制你的爬虫了

关于requests库中get方法的参数很多,请大家自行百度!

第三:百度搜索关键词

百度的关键词的接口是

url = "http://baidu.com/s?wd="+"你要搜索的关键词语"
import requests

def getHtml(url):
    try:
        kv = {"user-agent": "Mozilla/5.0"}
        reponse = requests.get(url,headers = kv)#发送请求并得到回应
        print(reponse.status_code)
        reponse.raise_for_status()#查看状态码 如果不是200则执行except
        reponse.encoding = reponse.apparent_encoding#编码方式
        return reponse.text#返回网页内容
    except:
        return "爬取失败"

if __name__ == "__main__":
    url = "http://baidu.com/s?wd="+"文字"
    page = getHtml(url)
    print(page)#把返回的网页内容给打印出来

这样你就能利用百度来任意搜索了!

第四:已知一张图片的url链接,爬取下来并存储下来

import requests

def getHtml(url):
    try:
        kv = {"user-agent": "Mozilla/5.0"}
        reponse = requests.get(url,headers = kv)#发送请求并得到回应
        reponse.raise_for_status()#查看状态码 如果不是200则执行except
        reponse.encoding = reponse.apparent_encoding#编码方式
        return reponse.content#返回图片,视频的二进制形式
    except:
        return "爬取失败"

if __name__ == "__main__":
    url = "http://img0.dili360.com/pic/2018/09/26/5bab38df6fda05b20233461_t.jpg@!rw6"
    tupain = getHtml(url)
    with open("picture.img","wb") as f:#将图片的二进制形式写入文件并保存
        f.write(tupain)

利用这种方法,我们可以爬取若干个图片,并不仅限于一张图片了!

这这篇文章中的讲四个实战例子,希望对大家有帮助!

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/84889520