代码操作一 爬取 贴吧战狼2 网页信息
# -*- coding:utf-8 -*-
# 引入需要的模块
import urllib # 用于进行中文编码
import urllib2 # 用于进行爬虫核心处理的
# 定义一个函数,用于爬取对应的数据
def load_url(url, file_name):
"""
作用:针对指定的url地址,进行数据的获取
:param url: 要爬取数据的具体url地址
:param file_name: 要保存到的文件名称:在当前函数中,只做提示使用
:return: 爬取到的数据
"""
print("~~~~~~~~~~~~开始爬取%s的内容~~~~~~~~~~~~" % file_name)
# 爬取程序
my_headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36"
}
request = urllib2.Request(url, headers=my_headers)
content = urllib2.urlopen(request).read()
print("#####爬取%s的内容完成#####" % file_name)
return content
# 定义一个函数,用于保存数据
def save_data(data, file_name):
"""
作用:主要是用来进行数据的存储的
:param data: 要存储的数据
:param file_name: 要存储的文件名称
:return: 无
"""
print("~~~~~~~~~~~~开始保存%s的内容~~~~~~~~~~~~" % file_name)
with open(file_name, "w") as f:
f.write(data)
print("#####保存%s的内容完成#####" % file_name)
# 定义函数,用于进行爬虫的核心处理功能
def spider(url, kw, begin, end):
"""
作用:用于进行核心爬虫功能的调度【领导】
:param url: 要爬取的地址
:param kw: 贴吧名称
:param begin: 起始页码
:param end: 结束页码
:return: 无
"""
for page in range(begin, end+1):
# 计算需要的页码
pn = (page - 1) * 50
# 进行kw参数的编码
kw = urllib.urlencode({"kw":kw})
# 拼接url地址
full_url = url + kw + "&pn=" + str(pn)
# 定义一个保存文件的名称
file_name = "-----" + str(page) + "----.html"
# 开始爬取数据
html = load_url(full_url, file_name)
# 保存数据到文件
save_data(html, file_name)
# 主程序运行入口
if __name__ == "__main__":
"""
主程序运行入口函数
"""
# 用户输入相关数据
url = "http://tieba.baidu.com/f?"
kw = raw_input("请输入要爬取的贴吧名称:")
begin = int(raw_input("请输入开始页码:"))
end = int(raw_input("请输入结束页面:"))
# 调用爬虫开始执行
spider(url, kw, begin, end)
运行结果:
Paste_Image.png
代码操作二
百度图片 爬取美女图网页
# -*- coding:utf-8 -*-
import urllib
import urllib2
# 请求url地址
url = "https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%9D%92%E7%BA%AF%E7%BE%8E%E5%B0%91%E5%A5%B3%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=%E9%9D%92%E7%BA%AF%E7%BE%8E%E5%B0%91%E5%A5%B3%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=150&gsm=96&rn=30&1502176187727="
# 请求头描述信息
header = {
"Accept" : "text/plain, */*; q=0.01",
"X-Requested-With" : "XMLHttpRequest",
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36"
}
# 包装个请求对象
request = urllib2.Request(url, headers= header)
# 根据请求对象发送数据请求,获取服务器返回的响应对象
response = urllib2.urlopen(request)
# 获取响应对象中的数据
content = response.read()
# 将获取到的数据保存在文件中
with open("girls.json", "w") as f:
f.write(content)
结果展示
Paste_Image.png代码操作三 post请求爬取豆瓣电影网站页面
# -*- coding:utf-8 -*-
# 引入需要的库
import urllib
import urllib2
# 要访问的url地址
url = "https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10"
# 要传递的Post方式的数据,有可能会有多组数据
submit_data = {
"start":20,
"tags":"喜剧"
}
# 编码
data = urllib.urlencode(submit_data)
# 构造请求头信息,创建请求对象
headers = {
"Accept" : "application/json, text/plain, */*",
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36",
"Accept-Language" : "zh-CN,zh;q=0.8"
}
request = urllib2.Request(url, data, headers)
# 发送请求,获取服务器响应数据
response = urllib2.urlopen(request)
# 获取爬取到的数据
content = response.read()
# 保存数据
with open("movies.json", "w") as f:
f.write(content)
结果展示:
Paste_Image.png代码操作四 爬取须登录的网页qq空间
# -*- coding:utf-8 -*-
# 引入需要的模块
import urllib
import urllib2
url="https://user.qzone.qq.com/153513634--/infocenter"
my_header = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36",
"Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Language" : "zh-CN,zh;q=0.8",
"Cookie": "153513634_################"
}
request = urllib2.Request(url, headers = my_header)
response = urllib2.urlopen(request)
html = response.read()
with open("qzone_1007821300.html", "w") as f:
f.write(html)
结果展示:
Paste_Image.png
网友评论