首页 > 其他分享 >如何通过HWebkit库配合Haskell语言采集链家图片

如何通过HWebkit库配合Haskell语言采集链家图片

时间:2023-11-02 16:37:02浏览次数:37  
标签:HWebkit 提取 src -- 标签 链家 URL Haskell let

如何通过HWebkit库配合Haskell语言采集链家图片_html

链家是一个专业提供二手房源、楼盘等信息的网站,需要二手房的朋友,链家可是个首选的资源平台。今天我们将使用HWebkit库编写一个爬虫程序,然后使用Haskell语言来采集链家平台的相关图片,快来学习一下吧。

```haskell
import Network.HTTP.Webkit
-- 定义代理主机和端口
proxyHost :: String
proxyHost = "www.duoip.cn"
proxyPort :: Int
proxyPort = 8000
-- 定义要爬取的URL
url :: String
url = "https://www.lianjia.com/"
-- 定义爬取函数
crawl :: IO ()
crawl = do
-- 创建一个Webkit实例
let client = webkitNew proxyHost proxyPort
-- 访问要爬取的URL
let response = webkitBrowse client url
-- 获取页面的HTML内容
let html = webkitPageHTML response
-- 提取图片的URL
let imgUrls = extractImgUrls html
-- 打印图片的URL
print imgUrls
-- 定义提取图片URL的函数
extractImgUrls :: String -> [String]
extractImgUrls html =
-- 使用正则表达式提取所有的标签
let imgTags = filter isImgTag $ split (== ">") html
-- 使用正则表达式提取标签中的src属性
let srcs = map extractSrc imgTags
-- 去除重复的src属性
let uniqueSrcs = nub srcs
-- 返回所有src属性
return uniqueSrcs
-- 定义检查是否为标签的函数
isImgTag :: String -> Bool
isImgTag tag =
-- 使用正则表达式检查标签是否为标签
let tags = ["<img", "
-- 去除引号和空格
let src = unwords $ words src
return src
```

以上代码中,首先代理主机和端口信息必不可少,还有就是要爬取的URL。然后,我们定义了一个爬取函数,该函数首先创建一个Webkit实例,访问要爬取的URL,获取页面的HTML内容,提取图片的URL,并打印出来。在提取图片URL的函数中,我们首先使用正则表达式提取所有的标签,然后使用正则表达式提取标签中的src属性,去除重复的src属性,最后返回所有src属性。

在检查是否为标签的函数和提取标签中的src属性的函数中,我们使用了正则表达式来匹配和提取字符串。这些函数使我们能够从HTML内容中提取出我们需要的信息,即图片的URL。内容其实不难,主要是通过代码的内容能帮到大家才是最重要的。


标签:HWebkit,提取,src,--,标签,链家,URL,Haskell,let
From: https://blog.51cto.com/u_14448891/8149988

相关文章

  • 如何使用Haskell语言和tagsoup库相结合采集同花顺财经相关视频
    今天要给大家带来的是一个使用Haskell语言和tagsoup库相结合的爬虫程序,主要是用来采集同花顺财经上的相关视频。前段时间一个粉丝跟我要了好久,由于太忙了,一直拖到现在。正好给大家分享一下,一起学习交流。```haskellimportNetwork.HTTPimportText.HTML.TagSoup--定义一......
  • 链家二手房
    importpandasaspdimportrequestsfrombs4importBeautifulSoup#获取数据的函数defget_data(page):url=f"https://sz.lianjia.com/ershoufang/pg{page}/"res=requests.get(url=url).textreturnres#处理页面数据的函数defprocess_page(page):......
  • Haskell 入门 - 零碎版
    Haskell20104.DeclarationsandBindings4.1OverviewofTypesandClasses4.1.2SyntaxofTypesTypevariablesTypeconstructorstypeconstantswithkind∗typeswithkind∗→∗built-intypeconstructorstrivialtype,as()with*functiontype,as......
  • Haskell(二):类型和类型类
    Haskell有一个静态类型系统,每个表达式的类型在编译时都是已知的。Haskell中的所有内容都有类型,因此编译器可以在编译程序之前对程序进行大量推理。现在我们用GHCI来检查一些表达式的类型,通过:t,该命令后跟任何有效的表达式。 “::”读作“具有类型”。函数也有类型,当我们编写......
  • 链家广州二手房分析 2023
    因为详细的数据分析在之前的文章中已经做过,而且这次重新爬取数据主要也是为了比较一下广州二手房市场的一些新变化,所以完整且详细的分析就不再重复了,有兴趣的读者可以翻开之前的文章。不过我利用这些新数据确实看到了一些有趣的变化。这篇文章将会零碎的分享这些新发现。天河......
  • 链家广州二手房数据 2023
    还记得在2019年的夏天曾经用R爬过一份广州在lianjia.com放盘数据(博客1,博客2,博客3)。翻看当时的记录:我稚嫩地惊叹着广州二手房放盘量已经超过50,000套了。尔后,疫情袭来,三年封锁。这个夏天当我用Python再次爬lianjia.com广州的放盘数据,却坦然地接受超120,000套巨量放盘数......
  • Haskell CSCI3136 Ripple Effect
    HaskellCSCI3136RippleEffectProblemDescriptionRippleEffectorHakyuuisalogicpuzzlesomewhatsimilartoSudoku.Thepuzzleconsistsofarectangulargri......
  • 深圳链家房价数据分析与可视化
    项目概述1.1目的和意义随着经济的发展,北、上、广、深这四大都市迅速发展,在经济、政治等方面有突出的表现,而且工作机会多,生活质量较高,是大多数人所向往的地方。想要在这......
  • 使用python爬虫爬取链家潍坊市二手房项目
    使用python爬虫爬取链家潍坊市二手房项目需求分析需要将潍坊市各县市区页面所展示的二手房信息按要求爬取下来,同时保存到本地。流程设计明确目标网站URL(https://wf.l......
  • Python爬虫——上海市链家二手房数据爬取及可视化分析
    一、选题的背景本次项目选择了中国的一线城市——上海市,通过了解上海市二手房的情况,可以帮助人们在购房、出租等方面做出更明智的决策。可以帮助人们了解上海市经济的......