【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式)

这篇具有很好参考价值的文章主要介绍了【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习使用。爬虫有风险。使用需谨慎。切记切记。
参考链接:学习python爬虫—爬虫实践:爬取B站排行榜
都是排行榜反正


网页细节

按F12,打开控制台。前端就是这点好,非常直观。
找到排行的具体位置,如下图,这里是【top_rank_list-poi-card】
(所以百度方向标这里实际上是poi数据,刚刚在手机上操作了下,确实,点击某个具体的mall在地图显示的是一个点,不是aoi)
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python

进一步细节找我需要的数据。一层一层拨开它的心。实际上我只需要名字。也就是绿色框框里的东西。
(问就是懒,一个rank少一二十个,多四五十个,不想一个个自己打)
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python

综合分析可知,每一个mall都是在class为【top_rank_list-poi-card】的div标签中,
而需要的mall名字则是在【top_rank_list-poi-card-top】的div标签下,【top_rank_list-poi-card-top-right】的【top_rank_list-poi-card-top-right-name】的div标签


request爬取【暂停版】

百度方向标的链接:手机打开百度地图,输入百度风向标,然后分享链接,在电脑端打开就行(直接搜索搜不出来的)
https://ugc.map.baidu.com/cube/feed/bangdancollect?stbar_height=48&city_id=131&loc=&tab1=%E8%B4%AD%E7%89%A9&tab2=%E8%B4%AD%E7%89%A9%E4%B8%AD%E5%BF%83&district_index=%E5%85%A8%E5%9F%8E&shangquan_index=&ncpshare=yymap

从链接其实可以看出,诸如city_id=131,这个131是北京,后面具体每个分类tab有不同。
没用过百度地图API,应该是一样的对应方式
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python

import json
import requests
from bs4 import BeautifulSoup

#返回服务器响应
def download_html(url, headers):
    # 发送请求,获取并返回响应
    res = requests.get(url, headers=headers)
    res.encoding = 'utf-8-sig'
    res = res.text.encode('utf-8-sig').decode('unicode_escape') #返回的res从ASCII转为unicode格式
    return res
    
#main function
def main():
    url = 'https://ugc.map.baidu.com/cube/feed/bangdancollect?'\
        'stbar_height=48&city_id=131&loc=&tab1=%E8%B4%AD%E7%89%A9&'\
        'tab2=%E8%B4%AD%E7%89%A9%E4%B8%AD%E5%BF%83'\
        '&district_index=%E5%85%A8%E5%9F%8E&shangquan_index=&ncpshare=yymap'

    headers = {
         'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us)'
                       'AppleWebKit/534.50 (KHTML, like Gecko)'
                       'Version/5.1 Safari/534.50'}   
    
    html = download_html(url, headers)
    print(html)
    print('***********************************************************')

if __name__ == '__main__':
    main()

注意了,直接用跑上面代码,html获得的信息,需要仔细找我们需要的信息
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python
从上面的图可以知道,我们需要的信息实际上,是在“select_field”里面。
所以下面做的是完善代码,提取我们需要的信息。


好的那么问题又来了。
现在根据参考链接,定义一个新的函数parse_html用来解析html,在rank_list,我们是不会得到返回值的!!!

import json
import requests
from bs4 import BeautifulSoup

#返回服务器响应
def download_html(url, headers):
    # 发送请求,获取并返回响应
    res = requests.get(url, headers=headers)
    res.encoding = 'utf-8-sig'
    res = res.text.encode('utf-8-sig').decode('unicode_escape') #返回的res从ASCII转为unicode格式
    return res
    
#解析html,返回排行榜信息
def parse_html(html):
    soup=BeautifulSoup(html,'html.parser')
    rank_list = soup.find_all('.detail_info')  # 获取排行榜列表
    print(rank_list)
    
#main function
def main():
    url = 'https://ugc.map.baidu.com/cube/feed/bangdancollect?'\
        'stbar_height=48&city_id=131&loc=&tab1=%E8%B4%AD%E7%89%A9&'\
        'tab2=%E8%B4%AD%E7%89%A9%E4%B8%AD%E5%BF%83'\
        '&district_index=%E5%85%A8%E5%9F%8E&shangquan_index=&ncpshare=yymap'

    headers = {
         'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us)'
                       'AppleWebKit/534.50 (KHTML, like Gecko)'
                       'Version/5.1 Safari/534.50'}   
    
    html = download_html(url, headers)
    data_list = parse_html(html)
    print(html)
    print('***********************************************************')

if __name__ == '__main__':
    main()

为什么呢,因为

【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python
这里有个beautifulsoup的基础文档还可以:

CSDN博主MilkLeong:Beautiful Soup库入门(标签树、基本元素、遍历、输出)
https://blog.csdn.net/MilkLeong/article/details/106156193


转文档提取版

由前面的卡壳处可知,需要转JavaScript。这个我还没研究。山重水复疑无路,咱换种思路。
首先,把前面的内容转为文本。就是整个【window._smarty_page_data = {“filter_info”:{"cXXXXXX】。然后跑下面的代码

import re
import pandas as pd
import json

def extract_key_value_pairs(data):
    data = data.strip('{}')
    pairs = data.split(',')
    
    result = {}
    for pair in pairs:
        pattern = r'"([^"]+)":"([^"]+)"' #"key":"value"
        match = re.search(pattern, pair)
        if match:
            key = match.group(1)
            value = match.group(2)
#             print(key, value)
        else:
            continue
            print("Invalid key-value pair")
        result[key] = value
    return result

filepath=r"XXXXX.txt"
with open(filepath, "r") as file:
    contents=file.read()
    
    #regular expression
    pattern=re.compile('rank_list.+本市商业街榜')
    specific_content=pattern.findall(contents)
    
    #delete certain contents
    specific_content=str(specific_content)
    cleaned_text = specific_content.replace("['rank_list\":[", '')
    cleaned_text = cleaned_text.replace('],"title":"本市商业街榜\']', '')

#split individual mall infomation
single_mall = cleaned_text.split('},{')

#change the infomation to dataframe format
result_list = []
for mall in single_mall:
    key_value_pairs = extract_key_value_pairs(mall)
    result_list.append(key_value_pairs)
    print(result_list)

# 将结果列表转换为 JSON 格式
df=pd.DataFrame(result_list)
df
#     result_list.append(key_value_pairs)

最后获得我们想要的df格式
【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式),Python,爬虫,python文章来源地址https://www.toymoban.com/news/detail-531813.html

到了这里,关于【爬虫】百度FengXiangBiao(完全爬虫卡住了,是爬虫+文本提取方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vim技巧--提取文本与文本替换

    前几天遇到一个使用情景,需要从一个包含各个读取代码文件路径及名字的文件中把文件路径提取出来,做一个filelist,这里用到了文本的提取和替换,这里做个小总结记录一下。 从网上找了一个作者写的代码用来练习。 练习1-将作者写的步骤文字,即x)开头的文字提取出来

    2024年03月11日
    浏览(45)
  • 视频硬字幕提取方法(可完全离线),开发个小工具辅助一下

    最近博主闲下来了,思考人生接下来的方向,无聊时帮别人做了点小东西,贡献出来: jre-17.0.7_win-x64的生成方式: 以管理员方式运行PowerShell执行命令: cd $env:JAVA_HOME jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.xml,java.desktop,jdk.management.agent --outpu

    2024年02月06日
    浏览(36)
  • 【大数据】文本特征提取与文本相似度分析

    写在博客前的话: 本文主要阐述如何对一段简短的文本做 特征提取 的处理以及如何对文本进行 分析 。 本文主要脉络以一个故事 s t o r y story s t ory 为主线,以该主线逐步延申,涉及到: 文本特征提取 、 词汇频率统计 (TF) , 反文档频率 (IDF) 以及 余弦相似度 计算的概念,

    2023年04月27日
    浏览(41)
  • Python实现百度关键词提取URL,轻松搞定!

    随着互联网的发展,搜索引擎已成为人们获取信息的主要途径。百度搜索引擎作为国内最受欢迎的搜索引擎之一,对于网站SEO优化而言,排名靠前的和URL是至关重要的。本文将介绍如何使用Python实现百度提取URL,帮助网站优化者更好地了解自己的网站在百度搜索

    2024年02月06日
    浏览(58)
  • Elasticsearch的文本摘要与提取

    文本摘要与提取是一种自然语言处理技术,用于从长篇文本中提取出关键信息,以便快速了解文本的主要内容。在大数据时代,文本摘要与提取技术在各种应用场景中发挥着越来越重要的作用。Elasticsearch是一个强大的搜索引擎,具有强大的文本处理和分析能力。本文将从以下

    2024年02月20日
    浏览(32)
  • 为什么说百度下个月推出文心一言会被ChatGPT完全碾压

    作者,姚远: Oracle ACE(Oracle和MySQL数据库方向) 华为云MVP 《MySQL 8.0运维与优化》的作者 中国唯一一位Oracle高可用大师 拥有包括 Oracle 10g和12c OCM在内的20+数据库相关认证。 曾任IBM公司数据库部门经理 现在一家第三方公司任首席数据库专家,服务2万+客户。 受ChatGPT成功的鼓

    2023年04月08日
    浏览(72)
  • vue使用百度富文本

     🔥 博客主页 : 破浪前进 🔖 系列专栏 : Vue、React、PHP ❤️ 感谢大家点赞👍收藏⭐评论✍️ 链接已放到文章中了 一般上传到public下,方便到时候打包进去,以免出现线上版本无法使用等问题 6、配置代理,否则会报错且无法使用上传图片等功能,下篇博客会说的

    2024年02月08日
    浏览(22)
  • ChatGPT实现HTML网页文本提取

    既然ChatGPT对于编程语言有非常强大的理解能力,那么它是否可以用来自动化地处理网页呢?答案是肯定的。ChatGPT可以使用机器学习算法来识别网页元素中的文本,并抽取出有用的信息。 例如我们提供一段层数比较多的相对来说较为复杂的 HTML 代码,如下图所示: 图中我们用

    2024年02月02日
    浏览(44)
  • Python 提取PDF文本和图片

    从PDF中提取内容能帮助我们获取文件中的信息,以便进行进一步的分析和处理。此外,在遇到类似项目时,提取出来的文本或图片也能再次利用。要在Python中通过代码 提取PDF文件中的文本和图片 ,可以使用 Spire.PDF for Python 这个第三方库。具体操作方法查阅下文。 Python 提取

    2024年02月08日
    浏览(41)
  • 百度翻译API —— 通用文本翻译

    目录 接入方式 通用翻译API HTTPS 地址: 请求方式 返回结果 返回结果举例 正确情况: 异常情况: 错误码解析 请求翻译方法 语种列表 常见语种列表 完整语种列表 完整源码   通用翻译API通过 HTTP 接口对外提供多语种互译服务。需要指定翻译文本和目标语言,当前语言可以设

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包