在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一个不错的方法,如下图: 官方文档链接:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ has_attr() 这个方法可以判断某标签是否存在某属性,如果存在则返回 True 解决办法: 为美观使用了匿名函数 soup_a = soup.find_a…
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行扩充.中文的话有GB系列.可能还听说过Unicode和UTF-8,那么,它们之间是什么关系呢? Unicode是一种编码方案,又称万国码,可见其包含之广.但是具体存储到计算机上,并不用这种编码,可以说它起着一个中…
这篇文章主要介绍了使用Python从网上爬取特定属性数据保存的方法,其中解决了编码问题和如何使用正则匹配数据的方法,详情看下文     编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了.问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行扩充.中文的话有GB系列.可能还听说过Unicode和UTF-8,那么,它们之间是什么关系呢?Unicode 是一种编码方案,又称万国码,可见其包含之广.但是具体存储到…
爬虫原理: 以下来自知乎解释 首先你要明白爬虫怎样工作.想象你是一只蜘蛛,现在你被放到了互联“网”上.那么,你需要把所有的网页都看一遍.怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧.在人民日报的首页,你看到那个页面引向的各种链接.于是你很开心地从爬到了“国内新闻”那个页面.太好了,这样你就已经爬完了俩页面(首页和国内新闻)!暂且不用管爬下来的页面怎么处理的,你就想象你把这个页面完完整整抄成了个html放到了你身上.突然你发现, 在…
#coding=utf-8 import urllib.request def gethtml(url): page=urllib.request.urlopen(url) html=page.read().decode("utf-8") return html url="........" html = gethtml(url) print(html) 有些网站的页面无法全部爬取(笔记)…
我在上一篇博客中说明了在爬取数据的时候,把数据写入到文件的乱码问题 在这一篇里面我做一个总结: 1.首先应该看一个案例 我把数据写在.py文件中: #coding:utf-8 s = 'hehe测试中文字符'ss = u'hehe测试中文字符'uu = s.decode('utf-8') print s  #输出乱码print uu  #正常print ss  #正常 这里需要对中文数据进行编码,输出正常 2.我们针对爬取回来的数据 在读取页面数据的时候已经对其编码 response.read(…
一.读取返回的页面数据 在浏览器打开的时候查看源代码,如果在头部信息中指定了UTF-8 那么再python代码中读取页面信息的时候,就需要指定读取的编码方式: response.read().decode('utf-8') 二.把中文数据写入到文件的时候 python默认的是按照ACSII的编码往外写,所以中文数据往外写肯定会出现乱码 那么再往外写入文件的时候需要对中文数据进行编码: fout.write('<td>%s</td>' %(data['title'].encode('…
在官网上下载了Python和PyCharm,并在网上简单的学习了爬虫的相关知识. 结对开发的第一阶段要求: 网上爬取最新疫情数据,并存入到MySql数据库中 在可视化显示数据详细信息 项目代码: import requests from bs4 import BeautifulSoup import json import time from pymysql import * def mes(): url = 'https://ncov.dxy.cn/ncovh5/view/pneumonia?…
今天想利用Requests库爬取糗事百科站点,写了一个请求,却报错了: 后来参考kinsomy的博客,在cmd中pip install pyopenssl ndg-httpsclient pyasn1 后再重新运行,结果ok…