Python爬虫实战,简单的爬虫案例,以及爬取百度贴吧网页原码和360翻译

一、爬取网页上的图片

import requests

response = requests.get("http://file.elecfans.com/web1/M00/8B/33/o4YBAFyTVqGAOgJFAAA5RKs3FWg313.jpg")
with open("pclogo.png", "wb") as f:
    f.write(response.content)

运行结果:

其中的地址是图片的地址,不是网页的地址,我们可以在网页上打开图片,然后点击右键,复制链接地址,就可以啦。

二、爬取百度贴吧

import requests

class TieBa(object):
    def __init__(self, tieba_name):
        self.tieba_name = tieba_name
        self.start_url = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
        self.header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                                     "Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE/10.0.2032.0"}

    def get_url_list(self):
        url_list = []
        for i in range(3):
            url = self.start_url.format(i * 50)
            url_list.append(url)
        return url_list

    def parse_url(self, url):
        print(url)
        response = requests.get(url, headers=self.header)
        return response.content.decode()

    def save_html(self, html, num):
        with open(self.tieba_name + "-" + "第" + str(num) + "页.html", "w", encoding="utf-8") as f:
            f.write(html)

    def run(self):
        url_list = self.get_url_list()
        for url in url_list:
            html = self.parse_url(url)
            page_num = url_list.index(url) + 1
            self.save_html(html, page_num)
        print("爬取成功!")


if __name__ == '__main__':
    print("爬取信息开始")
    tieba = TieBa('穿越火线')
    tieba.run()

结果如下:

因为有些网页是不允许特殊爬虫爬取的,所以我们需要更改头信息。

获取头信息header,我们可以在网页中按F12,然后点击Network,找到User-Agent,将头信息修改为这个就可以了。

三、爬取360翻译,实现英译中

import requests
import json

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"
                        "63.0.3239.132 Safari/537.36 QIHU 360SE/10.0.2032.0"}
query = input("英文:")
data = {
    "eng": "1",
    "ignore_trans": "0",
    "query": query
}
post_url = "https://fanyi.so.com/index/search?eng=1&validate=&ignore_trans=0&query=hello"
response = requests.post(post_url, data=data, headers=header)
result = response.content.decode()
result = json.loads(result)
print("中文:"+result["data"]["fanyi"])

结果:

data中的内容也是需要我们找到360翻译,然后打开网页控制台(F12),然后按(F5)刷新

然后点击清除屏幕上的信息,为了方便一会的查找

输入英文,点击翻译,在右面找到对应信息,右下角中显示的就是data中的参数(其中第二个后面没有参数,可以不用写)

原码中对参数进行了修改,将“hello”改为了可以自己输入的参数query,这样我们就可以不必在原码中修改,而直接在控制台中输入英文,直接进行翻译

此时的网址post_url就是最上面显示的网址,然后按照原码中的格式写入即可。

由于最后爬取到的是字符串类型,所以我们需要用json将其转换成字典类型。

因为有些网页是即使换了头信息,也是不允许爬取的,例如百度翻译,在爬取的过程中会报错,不允许爬取信息。有兴趣的可以试一试,或者选取一些其它的网页进行爬取,自己动手、思考,熟练的使用,才能真的掌握。

发布了22 篇原创文章 · 获赞 17 · 访问量 5858

猜你喜欢

转载自blog.csdn.net/weixin_42193813/article/details/101626438