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

    1 网页结构

      html:超文本标记语言------->类似人的鼻子耳朵,长在那里,大体骨架就是那个样子

      css:层叠样式表------->这个是外观的深化,比如贴个双眼皮,橙色眼睛。。。

      js:动态脚本语言----->人的技能,跳舞rap

    学习网站:w3cshool

    2 requests使用

    (1)开发环境使用pycharm

    (2)爬虫基本原理

      request---->向服务器发送访问的请求

      responce---->服务器收到用户请求以后,会验证请求的有效性然后向用户发送响应的内容。客户端收到响应并显示出来。

    (3)get post请求方式

      get:

      post:

        使用有道翻译网页作为案例,http://fanyi.youdao.com/,按F12进入开发者模式,单击network,此时为空。

        在输入框中输入"中国你好"单击翻译

        单击network---->XHR找到翻译数据

        查看请求方式为post,并可以加那个headers中的URL复制出来,因为post需要自己构建请求头

       使用request.post抓取有道翻译的结果

     1 import requests
     2 import json
     3 def get_translate_date(word=None):
     4     url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
     5     Form_data = {'i':word, 'from':'AUTO','to': 'AUTO','smartresult': 'dict', 'client':'fanyideskweb',
     6                     'salt':'1512399450582','sign':'78181ebbdcb38de9b4a3f4cd1d38816b','doctype':'json',
     7                     'version': '2.1','keyfrom':'fanyi.web','action':'FY_BY_CLICKBUTTION','typoResult':'false'}
     8     
     9     response = requests.post(url, data=Form_data)                # 请求表单数据
    10     content = json.loads(response.text)   # 将JSON格式字符串转字典
    11     print(content)
    12     print(content['translateResult'][0][0]['tgt'])             # 打印翻译后的数据
    13 if __name__ == '__main__':
    14     get_translate_date('中国你好')
    View Code

    3 使用beautiful soup解析网页

      通过requests可以抓取网页源码并解析提取数据,beautiful soup被移植到bs4库中,也就是安装它需要先安装bs4.官方中文文档https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

    (1)打开网页

    http://www.cntour.cn/

    (2)筛选路径soup.select()

    随便选择一句话----->右击检查(右侧弹出开发者界面)----->右击左边高亮数据------>选择copy----->选择copy selector

    (3)引入re库

    https://docs.python.org/zh-cn/3/library/re.html re中文官网

    (4)最终代码

     1 import  requests
     2 from bs4 import BeautifulSoup
     3 import re
     4 
     5 url="http://www.cntour.cn/"
     6 strhtml=requests.get(url)
     7 soup=BeautifulSoup(strhtml.text,'lxml')# 通过lxml解析后转换为树形结构,每个节点都是对象
     8 data=soup.select("#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a")
     9 print(data)
    10 for item in data:
    11     result={
    12         'title':item.get_text(),#连接在<a>标签中用get_text
    13         'link':item.get('href'),#在<a>href属性用get
    14         'ID':re.findall('d+',item.get('href'))#d表示匹配数字 +表示匹配前一个字符1次或者多次
    15     }
    16     print(result)
    View Code

    (5)最后结果

     完事!

  • 相关阅读:
    [译]The multi Interface
    [译]libcurl_tutorial
    [译]curl_multi_perform
    [译]curl_multi_info_read
    [译]libcurl错误码
    YumRepo Error: All mirror URLs are not using ftp, http[s] or file
    linux 修改文件用户组和所有者
    linux禁止root用户直接登录sshd并修改默认端口
    修改root登录用户名减少阿里云Linux主机“被暴力破解”警告
    CentOS云主机安全之新增ssh登录账户、禁止ROOT登陆
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/11782888.html
Copyright © 2011-2022 走看看