zoukankan      html  css  js  c++  java
  • python-爬虫

    ------------恢复内容开始------------

    获取数据的方式:

    企业生产的用户数据
    数据管理咨询公司
    政府/机构提供的公开数据
    第三方数据平台购买数据
    爬虫爬取数据

    requests模块

    resp.text返回的是Unicode型的数据。
    
    resp.content返回的是bytes型也就是二进制的数据。
    
    也就是说,如果你想取文本,可以通过r.text。
    
    如果想取图片,文件,则可以通过r.content。

    import requests
    # 1.指定url
    url = 'https://www.sogou.com/'   # 不带参数
    
    # 2.发起一个get请求,get方法会返回 请求成功后的响应对象
    response = requests.get(url=url)
    
    # 3.获取响应中的数据值:text可以获取响应对象中的字符串形式的页面数据
    page_data = response.text
    #print(page_data)
    
    # 持久化操作
    with open('./sogou.html','w',encoding='utf-8')as f:
        f.write(page_data)
    get请求
    # 将参数封装到字典中
    params = {'query':'周杰伦','ie':'utf8'}
    # 自定义请求头信息
    # 此处用的百度的UA
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    
    
    # 拿到响应对象
    response = requests.get(url=url,params=params,headers=headers)
    
    post请求
    # 封装post请求的参数
    data = {
    'source':'movie',
    'redir':'https://movie.douban.com/',
    'form_email':'你的豆瓣邮箱',
    'form_password':'你的登录密码',
    'login':'登录',
    }
    response = requests.post(url=url,data=data,headers=headers)

    发送cookies:需要登陆验证的网站需要带上cookies

     代理ip

    import requests
    # https://www.dogedoge.com/results?q=ip
    url = 'https://www.dogedoge.com/results?'
    params = {'q':'ip'}
    
    
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    # 将代理ip封装到字典中
    proxy = {
        'http':'117.88.176.110:3000'
    }
    # 更换网络ip,发起请求之前 response = requests.get( url=url,proxies=proxy,headers=headers,params=params) with open('./daili2.html','w',encoding='utf-8')as f: f.write(response.text)

    xpath里如何定义包含一个或多个class属性

     xpath解析

    # 打印文本值
    px3 = html.xpath('/html/head/title/text()')# 在路径表达式中使用text()方法
    print(px3[0])
    px4 = html.xpath('/html/head/title') # 返回的是元素节点
    print(px4[0].text)# 用元素节点的text属性打印
    
    px5 = html.xpath('/html/body/div/p')#p元素组成的列表
    for p in px5:
        print(p.text)

     爬取数据存入数据库

    (1)单行存储

    (2)批量存储

    #建立连接
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db')
    cur = conn.cursor()
    
    #对数据进行操作
    li = [('tanzhenx','shaoguan'),('huangmengdie','shaoguan')] #定义一个列表,列表中含多个元组,等会批量插入每个元组中的数据
    cur.executemany('insert into user (name,address) values(%s,%s)',li) #批量插入数据
    conn.commit()   #提交请求,否则数据是不会写入数据库里
    #关闭数据库连接
    cur.close()
    conn.close()

     动态爬取数据

    ------------恢复内容结束------------

  • 相关阅读:
    Qt控件SDK使用示例大全
    Qt编写地图综合应用45路径规划
    Qt编写地图综合应用43点聚合
    Qt编写地图综合应用44悬浮工具条
    Qt编写地图综合应用38覆盖物矩形
    Qt开发经验小技巧191195
    Qt编写地图综合应用41在线轮廓图
    59.学生选课管理系统
    56.音乐播放平台管理系统
    57.JAVA个人博客管理系统
  • 原文地址:https://www.cnblogs.com/foremostxl/p/11829482.html
Copyright © 2011-2022 走看看