1. python爬虫怎么去重清洗
这个得根据具体情况来看。
我给你提个思路,把爬到的全部数据先用一个变量接收,然后用set()工厂函数把数据转为集合(因为集合是无序且不重复的)并赋值给变量,这样就去重了,详细的只有按实际情况来了
2. python 爬虫产生的临时文件 怎么清理
是啊, ext 文件系统的设计不适合存放大量小文件, btrfs 也许可以。
但一个文件还会有用户权限修改时间什么的很多元数据,开销很大。打开文件的时候还要占用文件描述符。
你用个简单的 SQLite 数据库也比直接创建文件好。
3. 各位大神,谁能告诉我python爬虫中怎么去掉网页中的
response = response = bs(requests.get('0001121M.html').textclear = re.compile(']*>[^',re.I)content = clear.sub("",response)
4. 做爬虫时内存占用太快怎么清理,如爬取tao宝全网数据,内存约占越大最后整个pycharm被憋死,设了gc还不行
没看到代码,不好讲,python不存在写释放内存的问题,可能是定义了或生成了过多过大的列表或字典数据,注意多使用yield,会比return内存占用少很多
5. python 爬虫时怎么去除正文的超链接
超链接的格式都是的格式,你只要找出这样的格式的文本然后删除就可以了,至于怎么找可以正则匹配。
6. python 爬虫怎么过滤正文以外的
利用bs4查找所有的div,用正则筛选出每个div里面的中文,找到中文字数最多的div就是属于正文的div了。定义一个抓取的头部抓取网页内容:
import requestsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36', 'Host': 'blog.csdn.net'}session = requests.session()def getHtmlByRequests(url): headers.update( dict(Referer=url, Accept="*/*", Connection="keep-alive")) htmlContent = session.get(url=url, headers=headers).content return htmlContent.decode("utf-8", "ignore")统计文字的正则:
import re# 统计中文字数def countContent(string): pattern = re.compile(u'[\u1100-\uFFFD]+?') content = pattern.findall(string) return content查找每一个div,统计每一个div的文字,只保留文字最多的那个div:
# 分析页面信息def analyzeHtml(html): # 初始化网页 soup = BeautifulSoup(html, "html.parser") part = soup.select('div') match = "" for paragraph in part: content = countContent(str(paragraph)) if len(content) > len(match): match = str(paragraph) return match最后的调用几个函数即可:
def main(): url = "http://blog.csdn.net/" html = getHtmlByRequests(url) mainContent = analyzeHtml(html) soup = BeautifulSoup(mainContent, "html.parser") print(soup.select('div')[0].text)
7. python 爬虫 怎么处理 ajax
ajax一定会有javascript,你只要分析这些javascript,弄明白它们做了什么动作,就可以用python模拟出来。
8. 怎么样python爬虫进行此网站爬取
是加密的,解密方法在JS里面可以弄出来。
首先要AES解密,可以【Python:import Crypto.Cipher.AES】包,解密mode是CFB,seed是"userId:"+uid+":seed"的SHA256值,解密的key是seed[0:24],iv是seed[len(seed)-16:]。
如果没有登录,uid就是用的"anyone",这时候的seed是"61581AF471B166682A37EFE6DD40FE4700EE337FEEEF65E2C8F203FCA312AAAB",也就是key为"61581AF471B166682A37EFE6",iv为"C8F203FCA312AAAB"。
解密后文件是压缩过的,解压即可得到一个JSON。这部分解压我没仔细看他的算法,好像是gzip,直接用【Python:import gzip】解压有点出错,可能没用对或者不是这个算法,你在研究一下。第二种投机的方法就是,可以通过【Python:import execjs】直接调用他的pako.js文件的JS的inflate()函数来解压这块。JS代码混淆后看起来是非常难懂的,使用这种做法可以不用太看懂加密的算法,效率当然写Python实现这个解密算法低1点咯。
最后的JSON再用【Python:import demjson】解析,text的value就是文档。