麻瓜编程·python实战·第一周总结

  这周正式开始学习,今天星期四,前面三天都花了很多时间去敲代码。截止昨天,我完成了所有第一周的学习和作业,打算做一个小结,查缺以及预习。

一、爬虫知识

  1. 认识网页,几个最基础的标签:

<html>
<head>
</head>
<body>
    <div>
        <img>
        <ul>
            <h2></h2>
            <li></li>
            <a></a>
            <span></span>
         </ul>
    </div>
    <div class="footer">
        <p>© JD-coding</p>
    </div>
</body>
</html>
  1. 再来是提取网页信息:

第一步:request.get(url)  # 获取网页
第二步:BeautifulSoup(第一步.txt, 'lxml')  # 解析网页
第三步:第二步.select('...')  # 根据提取词(见下)提取信息

select()返回的是列表,里面全是标签对象,标签有①get_text()的方法来获取文本;
②当有“多对一”的情况时(比如一个商品的标签可以有多个),对标签用.stripped_strings来获取多个文本,并可用list(标签.stripped_strings)来列表化;
③用:标签.get(class="src(举例)") 来获取属性信息。

  1. 关于find_all:

有个题目是获取“星级”,实心星星和空心星星对应不同属性的span标签,获取星级就是数父级标签下,共有多少个<span>实心</span>

Paste_Image.png

```python
products_stars = soup.select('.ratings')

.ratings的 . 代表class!

for rate in products_stars:
star = len(rate.find_all('span','glyphicon glyphicon-star'))

4. ####从网页中获取多个链接,然后挨个传入函数解析:
  这个其实挺好办的,从网页获取目标链接,然后撞到一个列表里面,然后迭代传入函数。有两点想要说明一下:
 - 或许这个并没有我想象的那么简单,之前看的书_web scrapy with python_ 里面用的不是列表是set(),而且有可能会需要对爬取到的链接做字符串处理,比如.split(' ')、切片等等。
 - 计数器:因为我希望在python运行的过程中明确看到进度,所以我在迭代列表时加入了print(  list.index(i)  ),可以看到现在跑的是第几个元素。但我坚信应该有更聪明的办法,只是我现在还不懂。
5. ####js隐藏图片真实地址:
  在爬取Taylor图片的时候,我遇到一个问题是,获取到的图片全部都是一样的名字。
![一个问题.png](http://upload-images.jianshu.io/upload_images/2595866-ba454f3b84253f85.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  应该说这个问题,仍然悬而未决,因为我没有在我爬取的源代码里面找到真实地址。

6. ####关于js的另一种情况:
  有一个小片段是:爬取58二手商家商品页面的“浏览量”,这个浏览量也是被js控制,当刷新网页是,最开始的浏览量是0,忽然画面跳了一下才变成了真正的浏览量。
  要获取真实的浏览量,要去chrome-检查-source,source里面有所有的动作(js),在里面找到想要的地址,然后运用到爬虫当中。
>关于怎么找这个地址,老师并没有讲清楚,我也只能用心感受。
>![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2595866-8f2c31f02474e1f9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>怎么用这个地址的话,是这样的:
>![获取浏览量.png](http://upload-images.jianshu.io/upload_images/2595866-f0f0617fbfac373d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>先处理url,截取出那串数字,把数字用来组织api地址,解析api,处理api返回的结果(split……)

6. ####使用代理爬取数据
  在爬取58转转的时候,我的ip老是被屏蔽,说我MAX云云,于是我采用了[每爬取一次换一个代码的方法](https://mugglecoding.gitbooks.io/qa/content/ru_he_huo_qu_dai_li_ip.html),日后也应该会蛮长用到的。


> _好吧,总结的……差不多了_  
> 我的作业们:  
> [1-1作业:动手做网页][1]
> [1-2作业:爬取商品信息][2]
> [1-3作业:爬取租房信息][3]
> [1-4作业:爬取Taylor Swift][4]
> [1-5作业:爬58转转][5]

  [1]: http://www.jianshu.com/p/b2849ef74f00
  [2]: http://www.jianshu.com/p/9b94e7759ee0
  [3]: http://www.jianshu.com/p/9d589f0d9ba2
  [4]: http://www.jianshu.com/p/05f1486f8744
  [5]: http://www.jianshu.com/p/a740ce126974
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,428评论 25 709
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,683评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,403评论 19 139
  • 上大学,我们的学历是本科,我们叫本科生。 张雪峰老师用段子告诉你,我们要考研,然后今年的考研人数没有百万...
    固执的阿童木阅读 3,021评论 0 0
  • 戴建东 谨以此文献给我的故乡——下新宅,这是浙西南金衢盆地的一个小山村,数百年来的姑蔑情缘,孕育了纯厚的江南稻米文...
    风雅田园阅读 32,127评论 510 1,359