爬虫的简单操作

今天学习了python爬虫的简单操作。

1.学会创建文件夹和创建文件:

 1 import os
 2
 3 def mkdir(path):
 4     if os.path.exists(path):###判断是文件夹否存在,否则有可能会报错
 5         print("The path has already existed .")
 6     else:
 7         os.makedirs(path)###新建文件夹
 8         print("Done .")
 9
10 def write(path,str):
11     with open(path,"w+") as file:###写文件
12         file.write(str)
13
14 def main():
15     mkdir("test")
16     write("test/test.txt","hello world")
17
18 if __name__=="__main__":
19     main()

2.得到一个网站的源码(如果能够访问):

 1 from bs4 import BeautifulSoup
 2 import requests
 3
 4 def main():
 5     html=requests.get("https://www.baidu.com")###去找这个网址
 6     html.encoding="utf-8"###中文网址,换个字符集
 7     soup=BeautifulSoup(html.text,"lxml")###美味的汤,就是正则表达式
 8     print(soup.prettify())###将源码格式化(不是删数据)
 9
10 if __name__=="__main__":
11     main()

3.得到一个网站的源码中相应标签的元素(如果能够访问):

 1 import requests
 2 from bs4 import BeautifulSoup
 3
 4 def write_to_file(content):
 5     with open("save.txt","a",encoding="utf-8") as f:
 6         f.write(content)
 7
 8 def get_blog_info(url):
 9     html=requests.get(url)
10     soup=BeautifulSoup(html.text,"lxml")
11     print(soup.title)###各种各样的元素
12     print("="*100)
13     print(type(soup.title))
14     print("="*100)
15     print(type(soup.title.string))
16     print("="*100)
17     print(soup.title.string)
18     print("="*100)
19     print(soup.head)
20     print("="*100)
21     print(soup.p)
22
23 def main():
24     blog_url="https://www.cnblogs.com/sgh1023"
25     get_blog_info(blog_url)
26
27 if __name__=="__main__":
28     main()

4.下载一个图片(如果能够访问):

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import os
 4
 5 tot=0
 6 path="save"
 7
 8 def mkdir(path):
 9     if os.path.exists(path):
10         return
11     else:
12         os.makedirs(path)
13
14 def save(content):
15     global tot,path
16     mkdir(path)
17     with open(path+"/"+str(tot)+".png","wb+") as file:
18         file.write(content)
19         file.close()
20         tot=tot+1
21
22 def download_image(url):###下图片,不保证一定成功
23     print("Now downloading...",tot)
24     response=requests.get(url)
25     save(response.content)
26     print("Done !")
27
28 def main():
29     download_image("https://www.baidu.com/img/pc_1c6e30772d5e4103103bd460913332f9.png")
30
31 if __name__=="__main__":
32     main()

5.下载一个网页的图片:

 1 import requests
 2 import urllib
 3 import os
 4 from bs4 import BeautifulSoup
 5
 6 tot=0
 7 path="save"
 8
 9 def mkdir(path):
10     if os.path.exists(path):
11         return
12     else:
13         os.makedirs(path)
14
15 def save(content):
16     global tot,path
17     mkdir(path)
18     with open(path+"/"+str(tot)+".png","wb+") as file:
19         file.write(content)
20         file.close()
21         tot=tot+1
22 ######################################################################
23 def get_html_content(url):###获得网址的源码
24     req=urllib.request.Request(url)###添加头部,伪装Goole浏览器,这是抄的代码。
25     req.add_header(‘user-agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘)
26     response=urllib.request.urlopen(req)
27     html=response.read()
28     return html
29
30 def url_exist(url):###判断网址是否存在
31     try:
32         response=requests.get(url)
33         return True
34     except:
35         return False
36
37 def download_image(url):###下图片
38     print("Now downloading...",tot,url)
39     if(url_exist(url)):###判断网址是否存在
40         response=requests.get(url)
41         save(response.content)
42         print("Done !")
43     else:
44         print("Unavailable !")
45 ######################################################################
46 def process(str):###简单地处理网址
47     if(str[0]==‘h‘):
48         return str;
49     elif(str[0]==‘/‘ and str[1]!=‘/‘):
50         return "https:/"+str
51     return "https:"+str;
52
53 def get_image(url):
54     soup=BeautifulSoup(get_html_content(url),"lxml")
55     items=soup.find_all("img",{"src":True})
56     for i in items:
57         download_image(process(i["src"]))
58
59 def main():
60     url="https://www.bilibili.com"
61     get_image(url)
62
63 if __name__=="__main__":
64     main()

当然,find_all的参数视具体情况而定。

原文地址:https://www.cnblogs.com/GreenDuck/p/12287016.html

时间: 2024-11-07 02:32:34

爬虫的简单操作的相关文章

ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作

1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其自带的卸载工具进行卸载[universal installer],然后删除注册表项,删除环境变量,删除目录并且重新启动计算机. 2.在网页版进行创建表空间: 进入网页版: 在电脑的服务中我们可以看到一共有7个oracle的服务项目,其中只有三个是正在启动中.这三项中,只有当OracleDBConso

简单操作只需10秒破解PDF加密文件

简单操作只需10秒破解PDF加密文件 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51345950 如何破解PDF加密文件,如何破解PDF密码呢,破解加密的PDF文件? 从网上下载的PDF文件,由于版权的问题,作者经常会加密禁止读者复制修改等权限,如下面的PDF文档,用Adobe pdf Reader打开时,会显示"已加密"的字样,虽然可以阅读,但不能修改和标记. 为了解决这个问题,可以采用绕过破解密码这一

C++ 文件的简单操作

=================================================================== 编写程序时,很多时候都要对文件进行操作,比如从文件中读取数据,通过程序将一些数据保存到文件中等等.. 以下是c++对文件的一些简单操作. =================================================================== 一.文件输出 要将程序中的数据输出到文件中,一般需要以下5个步骤: ① 包含fstream

mysql数据库很简单操作

进入linux系统 root   >/usr/bin/mysql -u root mysql>show databases;                    #查看数据库 mysql>use  testtable;                        #testtable 为所要查看的库,应用数据库 mysql>show tables;                          #查看所有表 mysql>desc abc_table          

ftp简单操作及解说

一.实验拓扑 服务器 ------------------------客户机 二.实验条件 试验机在同一个网段,可以互相ping通. 确定装在了ftp软件包. 三.实验一: 匿名用户与本地用户都可以登录 匿名用户登录到/var/ftp,只能下载不能上传 本地用户登录到本地用户的家目录,可以上传和下载 实验步骤; [[email protected] ~]# rpm -q vsftp              //检测是否安装软件 package vsftp is not installed   

nfs简单操作及解说

NFS的实验报告 一.实验拓扑: 服务器 ----------      客户机 二.实验条件: 服务器的ip:192.168.4.5/24 客户机的ip:192.168.4.200 要确定机器有安装nfs包跟RPC软件包. 三.实验要求: 将/root 共享给192.168.4.200 可写,同步,允许客户机以root权限访问 NFS 服务端操作: 修改配置: [[email protected] ~]# vim /etc/exports    //修改配置的地址 [[email protec

PgSQL简单操作

********************************************** *基本操作 ********************************************** 数据库操作 $ psql test $ psql -h localhost -U username -W newpwd -p 5432 test =# create database mail_db; =# create database mail_db owner sunny; =# drop d

JS的简单操作和表单以及事件

HTML:主要用于往页面上放置所需要的控件. CSS:主要用来控制页面以及上面控件的样式. JS:主要用来控制页面上的特效以及数据交互. JS也分为顺序,条件(IF()... ELSE()),循环(FOR())三种语句,与C#基本一致. JS定义变量统一用var,定义数组不固定长度和类型,类似C#中的集合. JS的简单操作: DOM操作: 一.window: 1.window.onload 页面打开完再执行后面的操作 2.window.open(1,2,3,4) - 打开新页面, 1 - 打开页

Java时间简单操作

使用java操作时间感觉真真蛋疼,还是我大C#舒服,一个DateTime全部搞定 这里的Date指的是java.util.Date 获取当前时间: // 创建一个当前时间的Date对象 Date time = new Date(); 蛋疼的地方,对时间增.减操作: // 使用Calendar类对时间增.减操作 Calendar c = Calendar.getInstance();// 获得一个Calendar实例,该类是抽象类所以不可以使用new构造方法 // 使用setTime方法创建一个时