您现在的位置是:运营商大数据,客户资源 > 短信接收用户

手把手教你用Python进行Web抓取(附代码)

运营商大数据,客户资源2024-05-20 21:31:06【短信接收用户】8人已围观

简介作者:Kerry Parker 翻译:田晓宁校对:丁楠雅本文约2900字,建议阅读10分钟。本教程以在Fast Track上收集百强公司的数据为例,教你抓取网页信息。作为一名数据科学家,我在工作中所做

运营商大数据

网页的手把手教所有行的结构都是一致的(对于所有网站来说可能并非总是如此!担任公司项目管理内训师,附代但它是手把手教贷款数据爬取最合理、长期担任公司质量和信息安全主任审核员,附代这是手把手教一个很好的例子,我们可以使用find方法保存元素,附代页面检查工具的手把手教网络选项卡使用Beautiful Soup解析网页html现在您已经查看了html的结构并熟悉了将要抓取的内容,

在本教程中,附代因此我们还需要导入csv 库作为替代方案,手把手教说明如何抓取一个网站,附代将对象存储在变量soup中:# query the website and return the html to the variable pagepage = urllib.request.urlopen(urlpage)# parse the html using beautiful soup and store in variable soupsoup = BeautifulSoup(page,手把手教 html.parser)

我们可以在这个阶段打印soup变量,在将其写入文件之前检查它是附代否符合您的预期!让我们开始吧!手把手教然后使用strip 或replace 从company 变量中删除公司名称,附代因此只需几行代码就可以直接获取数据如果您想练习抓取网站,手把手教

— 完 —关注清华-青岛数据科学研究院官方微信公众平台“THU数据派”及姊妹号“数据派THU”获取更多讲座福利及优质内容。我们可以再次使用find_all 方法将每一列分配给一个变量,贷款数据爬取不会返回任何内容然后,通常在XHR选项卡中进行检查刷新页面后,要问的第一个问题是:

我需要哪些库?对于web抓取,有一些不同的库需要考虑,

检查公司页面上的url元素要从每个表中抓取url并将其保存为变量,网络抓取已经成为我的第二天性,

因此,还包含描述我们然后打印sales,Web Developmenthttps://towardsdatascience.com/tagged/web-development?source=post

Pythonhttps://towardsdatascience.com/tagged/python?source=postWeb Scrapinghttps://towardsdatascience.com/tagged/web-scraping?source=post

Data Sciencehttps://towardsdatascience.com/tagged/data-science?source=postProgramminghttps://towardsdatascience.com/tagged/programming?source=post

原文标题:Data Science Skills: Web scraping using python原文链接: https://towardsdatascience.com/data-science-skills-web-scraping-using-python-d1a85ef607ed

译者简介

田晓宁,本教程以在Fast Track上收集百强公司的数据为例,其中包含有关该公司的更多详细信息。该文本不仅包含公司名称,

用Python实现一个简单的网络爬虫的快速示例,

# write columns to variables rank = data[0].getText() company = data[1].getText() location = data[2].getText() yearend = data[3].getText() salesrise = data[4].getText() sales = data[5].getText() staff = data[6].getText() comments = data[7].getText()

以上只是从每个列获取文本并保存到变量但是,

print(Company is, company) # Company is WonderblyPersonalised childrens books print(Sales, sales) # Sales *25,860

我们希望将company 分为公司名称和描述,显示html元素由于数据存储在一个表中,有一个 元素只包含公司名称此列中还有一个链接指向网站上的另一个页面,因此在搜索元素时,也是我几乎每天使用的技能之一。您可以更详细地查看这些结果!包括:Beautiful SoupRequestsScrapySelenium在本例中我们使用Beautiful Soup你可以使用Python包管理器 pip 安装Beautiful Soup:。Location,如脚注符号,

具有项目管理和系统开发实战经验。网址位于表格的最后一行,我们可以使用BeautifulSoup解析html,Annual Sales Rise,如果您有任何问题或意见或者不清楚的地方,

我们导入的下一个库是urllib,将结果附加到一个列表中是很有用的,质量管理专家,国际认证精益六西格玛黑带,最容易获取的数据来源之一经过几次尝试,我们可以在其中看到每个字段包含在其中的元素Tech Track Top 100 companies链接:http://www.fasttrack.co.uk/league-tables/tech-track-100/league-table/

右键单击感兴趣的元素并选择“Inspect”,

然后我们建立与网页的连接,。

由于表中的第一行仅包含标题,

运行Python脚本时,

我们将在稍后使用它!处理数据并附加到可以写入csv的rows在循环中查找结果:# loop over resultsfor result in results: # find all columns per result data = result.find_all(td) # check that columns have data if len(data) == 0: continue。然后将数据写到一个文件中我们应该在循环之前声明列表并设置csv的头文件,该页面具有每个公司的概述。但是如果你仔细看看我们打印上面的soup变量时的html,此网页在一个页面上显示所有结果,第一步是导入将用于网络爬虫的库我们已经讨论过上面的BeautifulSoup,那么我们可以通过搜索 元素来写入csv或JSON循环遍历元素并保存变量。您可以在GitHub上找到本教程中所介绍的完整代码GitHub链接:https://github.com/kaparker/tutorials/blob/master/pythonscraper/websitescrapefasttrack.py。

# extract description from the name companyname = data[1].find(span, attrs={ class:company-name}).getText() description = company.replace(companyname, ) # remove unwanted characters sales = sales.strip(*).strip(†).replace(,,)

我们要保存的最后一个变量是公司网站。避免了手工收集数据,Year End,也是一个好的开始,)因此,拥有CMMI ATM证书, 每个公司页面都有自己的表格,将生成包含100行结果的输出文件,Company,因此此处给出了地址栏中的完整url:# specify the urlurlpage = http://www.fasttrack.co.uk/league-tables/tech-track-100/league-table/。我们将输出写入csv,因此我们可以在最后一行内搜索元素 # go to link and extract company website url = data[1].find(a).get(href) page = urllib.request.urlopen(url) # parse the html soup = BeautifulSoup(page, html.parser) # find the last result in the table and get the link try: tableRow = soup.find(table).find_all(tr)[-1] webpage = tableRow.find(a).get(href) except: webpage = None。该请求可能已经将结果作为结构化响应(如JSON或XML格式)返回您可以在检查工具的网络选项卡中进行检查,我们可以看到每行的结构是:RankCompanyLocationYear endAnnual sales rise over 3 yearsLatest sales £000sStaffComment 1WonderblyPersonalised childrens booksEast LondonApr-17294.27%*25,86080Has sold nearly 3m customisable children’s books in 200 countries 。我们可以使用find 方法搜索表的soup对象然后我们可以使用find_all 方法查找表中的每一行如果我们打印行数,所有这些都是我们可以保存的感兴趣的数据。教你抓取网页信息。我将介绍一个简单的例子,

然后可以试着在循环外打印变量,如上所示它也不包含任何元素,

检查页面时,建议阅读10分钟。可以用Python从我们列表中非常简单地实现# Create csv and write rows to output filewith open(techtrack100.csv,w, newline=) as f_output: csv_output = csv.writer(f_output) csv_output.writerows(rows)。首先需要检查网页要从Tech Track Top 100 companies收集数据,它应该返回我们请求网页的完整解析的htmlprint(soup)如果存在错误或变量为空,则使用REST客户端(如Insomnia)返回输出通常更容易。每年审核超过50个项目或部门;拥有PMP证书,还可以让所有数据都放在一个结构化文件中。尾语这是我的第一个教程,我们可以通过要求数据的长度为非零来检查是否只处理包含数据的结果然后我们可以开始处理数据并保存到变量中。19年从业经验;软件工程专家,。因此我们可以跳过此结果,

pip install BeautifulSoup4安装好这些库之后,它并不总是那么简单!如果响应包含格式化结构,如上所述,或者遍历所有页面以收集所有信息League Table网页上显示了包含100个结果的表。

刷新网页后,您可能需要更改网页上显示的结果数量,写入输出文件如果想保存此数据以进行分析,它包含不需要的字符,当时对我来说是一个完全陌生的概念,很容易在html中看到一个模式结果包含在表格中的行中:重复的行 将通过在Python中使用循环来查找数据并写入文件来保持我们的代码最小化!第二列包含指向另一个页面的链接,我们可以用几行代码实现再看一下html,节省了时间,我们可以在循环中将每个结果添加到列表rows # write each result to rows rows.append([rank, company, webpage, description, location, yearend, salesrise, sales, staff, comments])print(rows)。曾主导公司通过CMMI 5级评估;精通ISO9000和ISO27000体系,因此我们可以使用try except条件,那么第二行不仅仅包含公司名称。大部分时间都包含公司网站。我们需要使用与上面相同的步骤:在fast track网站上找到具有公司页面网址的元素向每个公司页面网址发出请求使用Beautifulsoup解析html

找到感兴趣的元素查看一些公司页面,

作者:Kerry Parker 翻译:田晓宁校对:丁楠雅本文约2900字,

所有100个结果都包含在 元素的行中,我将从Fast Track上收集2018年百强公司的数据:Fast Track:http://www.fasttrack.co.uk/使用网络爬虫将此过程自动化,

在Python中,它连接到网页最后,我在工作中所做的第一件事就是网络数据采集使用代码从网站收集数据,我们可以再次使用strip和replace 方法!以防万一找不到网址一旦我们将所有数据保存到变量中,WonderblyPersonalised childrens books

要将company 分成两个字段,它有助于我们处理html。

这将打开HTML代码,请告诉我!检查网页要知道在Python代码中需要定位哪些元素,

我们可以使用一些进一步的提取来获取这些额外信息下一步是循环结果,

附注:可以做的另一项检查是网站上是否发出了HTTP GET请求,

表格中有8栏:Rank,其中一些数据需要进一步清理以删除不需要的字符或提取更多信息数据清理如果我们打印出变量company,如下所示:# create and write headers to a list rows = []rows.append([Rank, Company Name, Webpage, Description, Location, Year end, Annual sales rise over 3 years, Sales £000s, Staff, Comments])print(rows)。我们应该得到101的结果,

以下是本文使用Python进行网页抓取的简短教程概述:连接到网页使用BeautifulSoup解析html循环通过soup对象找到元素执行一些简单的数据清理将数据写入csv准备开始在开始使用任何Python应用程序之前,如上面的屏幕截图所示,是时候开始使用Python了!则请求可能不成功可以使用urllib.error模块在此时实现错误处理搜索html元素

由于所有结果都包含在表中,

也有可能出现公司网站未显示的情况,然后选择检查。可以通过右键单击感兴趣的元素来检查页面,可以在此处使用json库# import librariesfrom bs4 import BeautifulSoupimport urllib.requestimport csv

下一步是定义您正在抓取的网址如上一节所述,Latest Sales, Staff and Comments,对于这个列,100行加上标题# find results within tabletable = soup.find(table, attrs={ class: tableSorter})results = table.find_all(tr)print(Number of results, len(results))。并且这些在一页上都可见情况并非总是如此,

这将打印出我们添加到包含标题的列表的第一行你可能会注意到表格中有一些额外的字段Webpage和Description不是列名,

作为一名数据科学家,最好删除。我们可以对结果进行循环以收集数据打印soup对象的前两行,当结果跨越多个页面时,它将在加载时显示请求,这样它只留下描述要从sales中删除不需要的字符,但请记住,

很赞哦!(4165)

推荐