一、爬取网页上的图片
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将其转换成字典类型。
因为有些网页是即使换了头信息,也是不允许爬取的,例如百度翻译,在爬取的过程中会报错,不允许爬取信息。有兴趣的可以试一试,或者选取一些其它的网页进行爬取,自己动手、思考,熟练的使用,才能真的掌握。