python爬虫

文章目录

  • python 爬虫
    • 1. if __name__ == '__main__'
    • 2. 异常
      • (1) except
    • 3. 正则表达式
      • (1) 常用语法
      • (2) re.S(大写)
      • (3) json.(dumps/dump/loads)
    • 4. 多线程
      • (1) pool
    • 5. requests模块
    • 6. urllib模块
      • (1) urlencode(data)
      • (2) urlecode(data)
    • 7. selenium模块
    • 8.文件
      • (1) 文件操作模式


python 爬虫

1. if name == ‘main

表示在源代码中会直接运行main()函数,而作为模块被导入时,不会自动运行


2. 异常

(1) except

  • try:xxx except:xx(捕获所有异常)
  • except vule:xx(vule具体异常信息)

3. 正则表达式

(1) 常用语法

  • ( \d*)(得到多个数字)
  • (.*?)(得到多个字符)
  • \s(匹配空白)
  • \S(匹配非空白)

注意: 加上()表示 会得到 匹配的字符,不加() 不会得 到匹配的字符

(2) re.S(大写)

  • compile(正则,re.S)返回一个对象,
  • re.findall(compile,aim,re.S)返回一个列表,当compile()中使用了re.S参数时可以在findall中省去。

注意: 有re.s参数,则表明在全局中进行匹配,如果不加re.s则表明只在每一行中进行匹配。

(3) json.(dumps/dump/loads)

  • json.dumps( ,ensure_ascil=false)将dict格式转换为str格式,默认情况下为ascil编码,因此中文设置其false。
  • json.dimp(value,fp)和文件操作with open(“filename”,“ab”,encoding=“utf-8”) as fp一起使用,先讲dict转换为str格式,然后存入文件中。
  • json.loads()将str格式转化为dict格式。

4. 多线程

(1) pool

  • map(fuc,[i for i in range(10)])
  • apply_async(fuc, (i, ))

5. requests模块

步骤:

  1. 定义url
  2. 获取求情数据( requests.get(url,headers) )

注意: 如果获取到的为音频,则需要转换为二进制文件进行读写( data.content )


6. urllib模块

(1) urlencode(data)

例子:

data={
  "age":18,
  "name":"崔颢"
}
url="http://www.baidu.com?"+urlencode(data)

代码分析:
urlencode()将键值对(keys:value)转化为url请求的参数

(2) urlecode(data)

该函数可以讲对字符串进行解析


7. selenium模块

描述: selenium模块就像是一个机器人,可以模拟人在浏览器的行为,但是缺点便是速度太慢,但可以抓取到动态网页。

注意: 在使用selenium模块时,需要安装浏览器对应版本的chromedriver软件,可以将软件放在python/scripts目录下,也可以配置环境变量。

代码实例:

#导入模块
from selenium import webdriver
from selenium.webdriver.chrome.option import Option
 webd=Option()
webd.add_argent("--headless")
drive=webdriver.Chrome(chrome_options=webd)
drive.get(url)
data=drive.page_source#得到数据

代码分析:

  1. 导入模块
  2. 创建Options对象,并添加属性
  3. 创建webdriver.Chrome对象
  4. 发送请求
  5. 得到数据

8.文件

(1) 文件操作模式

  • 文件操作模式参考php(总结)

你可能感兴趣的:(Python爬虫)