beautifulsoup

BeautifulSoup: Why .select method returned an empty list?

*爱你&永不变心* 提交于 2020-08-10 18:51:06
问题 I want to simulate the 'click' action with the BeautifulSoup so that I can scrape the page returned. I tried selenium webdriver and BeautifulSoup, but I got an empty list every time. In the following code I copied the selector -- my last attempt, but it still doesn't work. # Scraping top products sales and name from the Recommendation page from selenium import webdriver from bs4 import BeautifulSoup as bs import json import requests import numpy as np import pandas as pd headers = { 'user

python爬虫:XPath语法和使用示例

你。 提交于 2020-08-10 14:12:45
python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历。 选取节点 XPath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。 常用路径表达式: 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。 .. 选取当前父节点。 @ 选取属性。 text() 选取文本内容。 实例 在下面的表格中,列出一些路径表达式以及表达式的结果: 路径表达式 结果 bookstore 选取bookstore元素 /bookstore 选取根元素bookstore。注释:假如路径起始于(/),则此路径始终代表到某元素的绝对路径。 bookstore/book 选取属于bookstore的子元素的所有book元素。 //book 选取所有book子元素,而不管他们在文档中的位置。 bookstore//book 选择属于bookstore元素的后代的所有book元素,而不管它们位于bookstore之下的什么位置。 //book/title/@lang 选择所有的book下面的title中的lang属性的值。 /

如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握

风格不统一 提交于 2020-08-10 12:29:02
学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习。 如果时间充裕的话可以买一本讲Python基础的书籍比如 《Python编程》 ,阅读这些书籍,在巩固一遍基础的同时你会发现自己诸多没有学习到的边边角角,这一步是对自己基础知识的补充。 4.Python库是Python的精华所在,可以说Python库组成并且造就了Python,Python库是Python开发者的利器,所以学习Python库就显得尤为重要:The Python Standard Library ,Python库很多,如果你没有时间全部看完,不妨学习一遍常用的Python库:Python常用库 5.Python库是开发者利器,用这些库你可以做很多很多东西,最常见的网络爬虫、自然语言处理、图像识别等等,这些领域都有很强大的Python库做支持,所以当你学了Python库之后,一定要第一时间进行练习。 6

Python 爬虫--数据解析(bs4方法)

流过昼夜 提交于 2020-08-09 19:43:41
聚焦爬虫: 爬取页面中指定的页面内容。 编码流程: 1.指定url 2.发起请求 3.获取响应数据 4.数据解析 5.持久化存储 数据解析分类: 1.bs4 2.正则 3.xpath (***) 数据解析原理概述: 解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储 1.进行指定标签的定位 2.标签或者标签对应的属性中存储的数据值进行提取(解析) bs4进行数据解析 数据解析的原理: 1.标签定位 2.提取标签、标签属性中存储的数据值 bs4数据解析的原理: 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中 2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取 环境安装: pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple 实例化BeautifulSoup对象步骤: from bs4 import BeautifulSoup 对象的实例化: 1.将本地的html文档中的数据加载到该对象中 fp = open('./test.html','r',encoding='utf-8') soup = BeautifulSoup

使用 Python 下载 B 站视频

落爺英雄遲暮 提交于 2020-08-09 10:45:13
文 | 某某白米饭 来源:Python 技术「ID: pythonall」 B 站,一个月活用户达到 1.72 的视频网站,有时候会因为某些未知的原因导致放入收藏夹的视频失效,为了防止视频被和谐、被失效,身为 Pythonista 来撸一个 B 站的视频下载器。 分析页面 首先我们在 B 站点开一个视频(https://www.bilibili.com/video/BV1Vh411Z7j5)用 F12 分析一波,在下图中可以看到有多个 m4s 结尾的链接,并且响应的类型是 video/mp4。 把面板打到 Elements 界面,找到一个 window. playinfo 的 javascript 变量,并且内容和上图中的 url 类似,都是 m4s 链接,目标已找到。 获取标题和链接 抓取视频页面,并用 BeautifulSoup 模块解析页面,获取视频标题和链接(https://www.bilibili.com/video/BV17K4y1x7gs)。 def __init__(self, bv): # 视频页地址 self.url = 'https://www.bilibili.com/video/' + bv # 下载开始时间 self.start_time = time.time() def get_vedio_info(self): try: headers = {

一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

元气小坏坏 提交于 2020-08-08 17:52:38
【一、项目简介】 本文主要目标是采集淘宝的评价,找出客户所需要的功能。统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:1097524789 【二、项目准备工作】 1. 准备Pycharm,下载安装等,可以参考这篇文章: Python环境搭建—安利Python小白的Python和Pycharm安装详细教程 2. 爬取商品地址,如下所示: https://detail.tmall.com/item.htm?spm=a230r.1.14.1.55a84b1721XG00&id=552918017887&ns=1&abbucket=17 3. 需要下载几个库,如何下载呢? 打开pycharm软件点击File在点击setting选项,再选择Project:你的文件名下边的Project:Interpreter选项。 ​ 点击+号,安装这个项目需要用的库,例如:requests、beautifulsoup4、simplejson。 ​ 【三、项目实现】 1. 导入需要的库import requests from

如何在bilibili中查找弹幕发送者?用Python啊!

我的梦境 提交于 2020-08-08 11:18:46
众所周知bilibili是没有办法直接查看弹幕的发送者的,这使得当我们看到一些nt弹幕的时候虽然生气,却无可奈何,但是B站是可以屏蔽某个用户发送的弹幕的,这说明数据接口里肯定有用户信息,由于最近在学爬虫,所以我想先找找弹幕接口,分析下里面的数据。 找接口 找接口当然是随便打开一个视频然后F12啦,可是当我找了两圈后我傻眼了,没找到啊。。得,不能把时间浪费在这种事情上,果断打开百度,不出所料,找到了如下的两个接口,都是XML格式网页 https://comment.bilibili.com/+cid https://api.bilibili.com/x/v1/dm/list.so?oid=+cid 这里面的cid是一种每个视频独有的数字,也就是每个P都有一个cid,查找cid可以打开网页然后F12,在ctrl+f搜索cid,一般八九位数的就是cid了。 这里我找到了一个接口,可以通过aid找到cid https://www.bilibili.com/widget/getPageList?aid=+aid 分析数据 弹幕数据是获取到了,那么我们就要从这一堆数据中分析他们的用途了。 这里大概能得到两个信息,其中第6个数据为时间戳,第8个数据为用户uid的某种加密方式。经查询得到这是用户uid经过crc32校验得到的结果转为16进制数,所以只能通过uid得到对于的校验码,无法反推。

How to combine several similar commands using “for match in soup.find_all”?

人盡茶涼 提交于 2020-08-08 06:57:18
问题 I have below code in which there are similar commands involved for match in soup.find_all . I would like to ask if it's possible to merge them and thus have cleaner code. import requests from bs4 import BeautifulSoup url = 'https://www.collinsdictionary.com/dictionary/french-english/aimanter' headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'} soup = BeautifulSoup(requests.get(url, headers = headers).content, 'html.parser') entry_name =

How to combine several similar commands using “for match in soup.find_all”?

北城以北 提交于 2020-08-08 06:56:26
问题 I have below code in which there are similar commands involved for match in soup.find_all . I would like to ask if it's possible to merge them and thus have cleaner code. import requests from bs4 import BeautifulSoup url = 'https://www.collinsdictionary.com/dictionary/french-english/aimanter' headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'} soup = BeautifulSoup(requests.get(url, headers = headers).content, 'html.parser') entry_name =

How to convert a string variable with special characters in Python to print properly

跟風遠走 提交于 2020-08-08 05:52:24
问题 Sorry if the title is confusing but I have literally researched this for two hours and have no idea how I am supposed to ask this question so anyone feel free to edit this post. I have this string variable that I created using web scraping and it uses special characters and looks something like "\ud83d\ude00\u0107\u00e7 \n hello" without the quotations when I print it. The issue is that I want it to print the actual special characters but I am not sure what encoding method I should use. If I