python之爬虫相关

1.基础爬虫

1.1.请求与返回

Req = urllib.request.Request(‘网页地址’)
Response = urllib.request.urlopen(req)

1.2.response对象的方法

(1) read() 读取爬取的所有内容
(2) geturl()得到访问的网址
(3) info()得到HTTPMessage对象
(4) getcode()得到当前状态(200是正常接收)

1.3.获取翻译的python代码示例

在这里插入图片描述

1.4.获取图片实例

在这里插入图片描述

1.5.IP代理

在这里插入图片描述
在这里插入图片描述

1.6.url详解

在这里插入图片描述

1.7.请求头常见参数

在这里插入图片描述

1.8.常见响应状态码

在这里插入图片描述

1.9.常见相关函数

在这里插入图片描述
在这里插入图片描述

1.10.cookie

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.更简单的request库的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.csv文件

在这里插入图片描述
在这里插入图片描述

3.python连接mysql数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.python与mongoDB

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.python多线程爬虫

在这里插入图片描述
在这里插入图片描述
D在这里插入图片描述

6.动态网页数据抓取:Selenium + chromedriver获取动态数据

6.1.基本函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述XPath语法:
在这里插入图片描述

6.2.操作表单元素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.3.Cookie操作

在这里插入图片描述

6.4.页面等待

在这里插入图片描述
在这里插入图片描述

6.5.切换页面

在这里插入图片描述

6.6.设置代理IP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.图形验证码识别技术

在这里插入图片描述
在这里插入图片描述

8.爬电影信息实例

import requests
from lxml import etree
import csv
import time
import os
import pymysql
import threading
from queue import Queue
# 请求头部
header = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Mobile Safari/537.36'}
# 排行版url
url = 'https://movie.douban.com/chart'
# 数据库信息
dbserverID = "localhost"
user = "root"
passord = "19990729"
dbname = "movies"
# 队列的定义
q =Queue()
# 定义图片存储路径
os.mkdir("movies_img")
path = os.getcwd() + os.sep + "movies_img"

def spider():
    res = requests.get(url,headers = header)
    # 解析网页
    selector = etree.HTML(res.text)
    movies = selector.xpath('//*[@id="content"]/div/div[1]/div/div/table')
    items = [] #存放所有的item信息
    for movie in movies:
         # 图片url
        img_url = movie.xpath('tr/td[1]/a/img/@src')[0]
         # 电影名爬取与处理
        movie_name = movie.xpath('tr/td[2]/div/a/text()')[0]
        movie_name = movie_name.strip().strip('/').strip()
         # 电影评分
        movie_score = movie.xpath('tr/td[2]/div/div/span[2]/text()')[0]
        item = (movie_name,movie_score,img_url)
        items.append(item)
    return items

def save_csv(items):
    with open(os.getcwd()+os.sep+'movie.csv','a',encoding="utf-8-sig",newline='') as csvfile:
        write = csv.writer((csvfile))
        write.writerow(['电影名','分数','图片url'])
        write.writerows(items)

def save_sql(items):
    try:
        con = pymysql.connect(dbserverID, user, passord, dbname)  # 数据库连接
        cursor = con.cursor()
        sql = 'insert into movie_data(电影名,分数,图片url) values(%s,%s,%s)'
        cursor.executemany(sql,items)
        con.commit()
    except:
        con.rollback()
    finally:
        con.close()
        print("关闭数据连接")

class download_img(threading.Thread):
    def __init__(self,ID):
        threading.Thread.__init__(self)
        self.ID = ID
    def run(self):
        while not q.empty():
            print("线程{0}正在下载图片...".format(self.ID))
            url = q.get()
            # 得到图片名
            name = url.split('/')[-1]
            with open(os.path.join(path,name),'wb') as f:
                f.write(requests.get(url).content)
            time.sleep(2)

if __name__ == "__main__":
    items = spider()
    #save_csv(items)
   #save_sql(items)
    # 填充队列
    for each in items:
        q.put(each[2])
    d1 = download_img(1)
    d2 = download_img(2)
    d1.start()
    d2.start()
    d1.join()
    d2.join()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值