zoukankan      html  css  js  c++  java
  • python3 爬虫 随笔-1

    python 版本 3.6.1

    1.正则表达式

      http://krzer.com/2015/11/29/Python3-spider-start/

    常用方法:findall,search,sub
    常用符号:点号,星号,问号与括号
    findall: 匹配所有符合规律的内容,返回包含结果的列表
    Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)
    Sub:替换符合规律的内容,返回替换后的值
    常用技巧
    import re #导入re库,之后调用re库需要re.
    from re import #导入re库,之后调用re库不需要re.
    from re import findall,search,sub,S
    不需要complie #一般情况下不建议使用complie
    使用d+匹配纯数字
    # Author:
    # title:
    import re
    
    # .*:贪心算法
    #.*的使用举例
    secret_code = 'hadkfalifexxhaixxfasdjifja134xxnanxx23345sdfxxuniversityxx8dfse'
    b = re.findall('xx.*xx',secret_code)
    print(b)
    
    # .*?:非贪心算法
    c = re.findall('xx.*?xx',secret_code)
    print(c)
    # ():括号内的数据作为结果返回
    d = re.findall('xx(.*?)xx',secret_code)
    print(d)

    2.爬虫入门

        给文件加入头信息,用以模拟浏览器访问
    用python抓取指定网页
    实现可变网站的访问
    将网页内容保存

    1)给文件加入头信息,用以模拟浏览器访问
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    headers = {
    'Connection': 'Keep-Alive',
    'Accept': 'text/html, application/xhtml+xml, */*',
    'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'

    2)用python抓取指定网页
    import urllib.request
    url= "http://www.baidu.com"
    data = urllib.request.urlopen(url).read()#
    data = data.decode('UTF-8')
    print(data)

    3.urllib_request使用

    # Author:
    # title:
    # import urllib.request
    # url= "http://www.baidu.com"
    # data = urllib.request.urlopen(url).read()#
    # data = data.decode('UTF-8')
    # print(data)
    
    
    # 导入的时候 ,一定为 “urllib.request”  ,
    # 如果 导入的为 “urllib”  则 在调用 urllib.request.urlopen(url).read() 会报错(AttributeError: module 'urllib' has no attribute 'request')
    import urllib.request
    # url 中的 “http://” 一定要加入,否则请求会有问题
    url="http://www.baidu.com"
    
    # urllib.request.urlopen(url)官方文档返回一个 http.client.HTTPResponse 对象,
    # 这个对象又用到的read()方法;返回数据;这个函数返回一个 http.client.HTTPResponse 对象,
    #  这个对象又有各种方法, 比如我们用到的read()方法。
    data=urllib.request.urlopen(url).read()
    data=data.decode("UTF-8")
    print(data)

    4.动态拼接url

    # Author:
    # title:
    import urllib
    import urllib.request
    data = {}
    data['word'] = 'python spider'
    url_values = urllib.parse.urlencode(data)
    url = "http://www.baidu.com/s?"
    full_url = url + url_values
    a = urllib.request.urlopen(full_url)
    data = a.read()
    data = data.decode('UTF-8')
    # data是一个字典, 然后通过urllib.parse.urlencode()
    # 来将data转换为 ‘word=python+spider’的字符串, 最后和url合并为full_url
    # print(data)
    ##打印出网址:
    # a.geturl()
    print(a)

    5.保存图片

    import urllib
    import urllib.request
    picurl="https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1687057275,747988600&fm=58&u_exp_0=1120023660,414683190&fm_exp_0=86&bpow=1000&bpoh=1500"
    pic = urllib.request.urlopen(picurl)
    jpgpic = pic.read()
    #首先你得有个pic文件夹
    j=1
    with open('pic/'+str(j)+'.jpg',"wb") as fp:
    print('now downloading:')
    # 写入文件
    fp.write(jpgpic)
    fp.close()
    j=j+1
  • 相关阅读:
    最主要的商业模式
    Linux-清除rootpassword
    Drupal 关于节点(nodes)的理解
    hdu4240 求一条流量最大的路/(此题网上百分之90以上算法是错误的)
    LeetCode Next Permutation
    关于使用strtok的一个小问题
    SDUT--Pots(二维BFS)
    微信 小程序组件 滑动导航和获取元素实际高度
    微信 小程序组件 电话
    微信小程序组件 客服
  • 原文地址:https://www.cnblogs.com/luoyeyue/p/7521610.html
Copyright © 2011-2022 走看看