1. 常见数据集网站
论文开源代码/数据集:Paperswithcodes
竞赛数据集:Kaggle Dataset
数据集搜索工具:Google Dataset Search
HuggingFace:Hugging Face
魔塔:Model Scope
开源工具包自带:Pytorch, tensorflow
2. 网络数据集获取
curl
经常无法工作,因为很容易被屏蔽
方法:使用headless
的浏览器,例如selenium
模拟浏览器操作。
ip
多次访问会被屏蔽
方法:云服务器AWS
或Azure
。
使用Beautiful Soup进行网页数据抓取的基本教程
1. 导入库并获取网页内容
首先,我们需要导入requests
库来抓取网页内容,然后将其传递给Beautiful Soup来进行解析。
import requests
from bs4 import BeautifulSoup
# 获取网页内容
url = "https://example.com"
response = requests.get(url)
html_content = response.text
# 使用Beautiful Soup解析网页内容
soup = BeautifulSoup(html_content, "html.parser")
在这个示例中,我们通过requests.get()
抓取网页内容,并将其传递给BeautifulSoup
进行解析。解析器选择"html.parser"
是因为它适用于大多数HTML页面。
2. 定位到具体的元素
Beautiful Soup提供了几种方法来查找页面上的元素:
使用find()
定位单个元素
find()
方法返回文档中第一个符合条件的元素。例如,如果我们要获取页面中的第一个<h1>
标签:
h1_tag = soup.find("h1")
print(h1_tag.text)
find()
方法可以根据标签名、类名、ID或其他属性来定位元素。如果你想查找具有特定ID的元素,可以这么做:
element_by_id = soup.find(id="specific-id")
print(element_by_id.text)
使用find_all()
定位多个元素
如果你想获取所有符合条件的元素,可以使用find_all()
方法。例如,抓取所有的<a>
标签:
links = soup.find_all("a")
for link in links:
print(link.get("href"))
在这个例子中,find_all("a")
会返回页面中所有的<a>
标签,并且我们通过.get("href")
提取了每个链接的URL。
3. 提取所需的元素列表
有时候你可能需要提取特定的属性值或者从多个元素中获取信息。Beautiful Soup允许你用更多的筛选条件来过滤数据。
根据类名查找元素
你可以通过class_
参数来根据类名查找元素:
# 查找所有class为'item'的div标签
items = soup.find_all("div", class_="item")
for item in items:
print(item.text)
使用正则表达式过滤内容
你还可以使用正则表达式来匹配标签的内容。例如,查找所有包含“example”文本的链接:
import re
links = soup.find_all("a", href=re.compile("example"))
for link in links:
print(link.get("href"))
4. 遍历和获取子元素
Beautiful Soup支持树状结构的遍历,你可以轻松访问元素的父标签、子标签、兄弟标签等。例如,获取某个标签的所有子元素:
parent_tag = soup.find("div", class_="parent")
child_tags = parent_tag.find_all("p")
for child in child_tags:
print(child.text)
5. 提取属性
除了提取标签的内容,Beautiful Soup还允许你提取标签的属性。例如,获取所有<img>
标签的src
属性:
images = soup.find_all("img")
for img in images:
print(img.get("src"))
3. 数据集标注方式
数据标注技巧:
- 将置信度高的数据直接使用预测标签
- 置信度较低的模型交给人类众包
- 可以使用一些简单的programming来标注一定的数据(长度,敏感词等等)