希望提供帮助?以下是您的选择:","Crunchbase","关于我们","感谢大家的大力支持!","快速链接","联属会员计划","ProxyScrape 高级试用","代理类型","代理国家","代理用例","重要","Cookie 政策","免责声明","隐私政策","条款和条件","社交媒体","在 Facebook 上","LinkedIn","推特","Quora","电报","不和谐音"," © Copyright 2024 -Thib BV| Brugstraat 18 | 2812 Mechelen | Belgium | VAT BE 0749 716 760"]}
Web scraping can be defined as the method of collecting and restructuring data from websites. It can also be defined as the programmatic approach of obtaining website data in an automated manner. For instance, you want to extract the email IDs of all people who commented on a Facebook post. You can do this by
网络搜刮可定义为从网站收集和重组数据的方法。它也可以定义为以自动化方式获取网站数据的程序化方法。例如,您想提取在 Facebook 上发表评论的所有人的电子邮件 ID。有两种方法可以实现这一目的。首先,您可以将光标指向任何人的电子邮件地址字符串。然后将其复制并粘贴到文件中。这种方法被称为手动搜刮。但如果要收集 2000 个电子邮件 ID 怎么办?借助网络搜刮工具,您可以在 30 秒内提取所有电子邮件 ID,而不是使用手动搜刮的 3 个小时。
你可以使用网络搜刮工具从网站上提取信息。您只需知道如何点击,无需编程知识。这些工具节省资源,节约时间和成本。你可以根据自己的需要抓取数百万个网页,而不必担心网络带宽。有些网站采用反机器人技术,阻止搜刮工具收集数据。但是好的网络搜刮工具具有绕过这些工具的内置功能,可以提供无缝的搜刮体验。
Python 有很好的工具来从网络上抓取数据。例如,您可以导入requests 库来检索网页内容,导入bs4(BeautifulSoup) 来提取相关信息。您可以按照下面的步骤用 Python 进行网络搜刮。我们将从该网站提取信息。
您必须导入请求库来获取网站的 HTML。
进口请求
您必须向网站发出GET请求。您可以将 URL 粘贴到requests.get()函数中。
r= requests.get('http://www.cleveland.com/metro/index.ssf/2017/12/case_western_reserve_university_president_barbara_snyders_base_salary_and_bonus_pay_tops_among_private_colleges_in_ohio.html')
使用r.content提取网站内容。它以字节为单位提供网站内容。
c =r.content
您必须导入 BeautifulSoup 库,因为它能让您轻松地从网页中抓取信息。
从bs4导入BeautifulSoup
您必须从内容中创建一个 BeautifulSoup 对象,并使用多种方法对其进行解析。
soup=BeautifulSoup(c)
print(soup.get_text())
你会得到类似这样的输出结果(这只是一部分)。
我们必须找到正确的 CSS 选择器,因为我们需要提取所需的数据。我们可以使用汤对象的.find()方法找到网页上的主要内容。
main_content = soup.find('div', attrs = {'class': 'entry-content'})
我们可以使用汤的.text属性从表格中获取文本信息。
content = main_content.find('ul').text
print(content)
我们以字符串形式检索了表格文本。但是,如果我们能提取出文本字符串的特定部分,这些信息将大有用武之地。为了完成这项任务,我们需要使用正则表达式。
正则表达式(RegEx) 是定义搜索模式的模式序列。其基本思想是
假设我们想从文本表中提取以下信息。
您可以按照以下步骤提取这三项信息。
导入re 后,为提取薪金,必须创建薪金模式。使用 re.compile()方法将以字符串形式提供的正则表达式模式编译成RegEx模式对象。此外,还可以使用pattern.findall() 查找所有匹配项,并以字符串列表的形式返回。每个字符串代表一个匹配项。
导入re
salary_pattern = re.compile(r'\$.+')
salaries = salary_pattern.findall(content)
重复同样的步骤提取学院名称。制作模式并提取名称。
school_pattern = re.compile(r'(?:,|,\s)([A-Z]{1}.*?)(?:\s\(|:|,)')
schools = school_pattern.findall(content)
print(schools)
print(salaries)
重复同样的步骤提取总统姓名。制作图案并提取所需的名字。
name_pattern = re.compile(r'^([A-Z]{1}.+?)(?:,)', flags = re.M)
names = name_pattern.findall(content)
print(names)
这些工资看起来杂乱无章,难以理解。因此,我们使用 Python 列表理解将字符串工资转换为数字。我们将使用字符串切分、分割和连接以及列表理解来实现所需的结果。
salaries = ['$876,001', '$543,903','$2453,896'] [int('.join(s[1:].split(',') for s in salaries
[int(''.join(s[1:].split(',')))forsinsalaries]][int(''.join(s[1:].split(',')))forsinsalaries
输出结果如下
数据可视化可以帮助你直观地理解数据,从而揭示数据的趋势、模式和相关性。您可以将大量数据转化为图形、图表和其他视觉效果,以识别异常值并获得有价值的见解。
我们可以使用 matplotlib 将数据可视化,如下图所示。
如下图所示,导入必要的库。
importpandasaspd
importmatplotlib.pyplotasplt
创建一个包含学校、姓名和工资的 pandas 数据框。例如,您可以将学校转换为以下数据帧
df_school = pd.DataFrame(schools)
打印(df_school)
输出结果是
同样,您也可以对工资和姓名做同样的处理。
为了使数据可视化,我们可以绘制如下所示的条形图。
df.plot(kind='barh', x = 'President', y ='salary')
输出结果如下
网络抓取有助于企业提取有关市场洞察力和行业的有用信息,从而提供数据驱动的服务并做出数据驱动的决策。由于以下原因,代理对于从各种网站有效地抓取数据至关重要。
您知道需要多少代理才能获得上述好处吗?您可以使用以下公式计算所需的代理数量:
代理数量 = 访问请求数/抓取率
访问请求的数量取决于以下参数。
另一方面,抓取率受到用户在一定时间内请求次数的限制。有些网站允许每个用户的请求次数有限,以区分自动请求和人工请求。
您可以按照以下步骤在 Python 中使用代理。
进口请求
代理='http://114.121.248.251:8080
url='https://ipecho.net/plain'
page = requests.get(url,
proxies={"http": proxy, "https": proxy})
打印(page.text)
输出结果如下
我们讨论过,我们可以使用网络搜刮从网站中提取数据,而不是使用人工搜刮。网络抓取既节约成本,又节省时间。企业利用它来收集和重组网络信息,以做出数据驱动的决策并获得有价值的见解。使用代理服务器是安全网络搜刮的关键,因为它可以从目标网站上隐藏用户的原始 IP 地址。您可以使用数据中心代理或住宅代理进行网络搜索。但我们更倾向于使用住宅代理,因为它们速度快,不易被发现。此外,我们还可以使用 Python 中的正则表达式来匹配或查找字符串集。这意味着我们可以借助正则表达式从文本中提取任何字符串模式。我们还看到,数据可视化将大量数据转换成图表、图形和其他可视化内容,帮助我们发现数据中的异常情况并识别有用的趋势。