首页 > 编程语言 >Python多线程爬取数据代码模版

Python多线程爬取数据代码模版

时间:2023-11-09 11:33:03浏览次数:49  
标签:Python text 爬虫 爬取 href proxy 网页内容 import 多线程

由于对爬虫Ip信息的理解可能存在偏差,我将假设你想要爬取的网站支持Python多线程运行数据。以下是一个简单的Haskell爬虫程序,用于爬取Python多线程跑数据的内容:

Python多线程爬取数据代码模版_Data

import Network.HTTP
import Network.URI
import Data.List
import Data.Maybe
import Control.Monad

-- 爬虫爬虫Ip信息
proxy_host = "www.duoip.cn"
proxy_port = 8000

-- 网站URL
url = "http://python.org"

-- 获取网页内容
getHtml :: String -> IO String
getHtml url = do
  let proxy = proxy_host ++ ":" ++ show proxy_port
  response <- simpleHTTP { proxy = proxy } $ getURL url
  return $ responseBody response

-- 解析网页内容
parseHtml :: String -> [(String, String)]
parseHtml html = map (\(href, text) -> (href, text)) $ 
  [ (href, text) 
    | elem (HREF,_) $ tagAttributes $ H1 $ parseTags html
    , let href = maybe "" (head 、drop 1) $ 
            find ((== "href") 、toLower) $ 
            map (\(tag, attrs) -> 
              case attrs of
                [] -> Nothing
                [a] -> Just (a, tag))
            $ tagAttributes $ H1 $ parseTags html
    , let text = maybe "" (head 、drop 1) $ 
            find ((== "text") 、toLower) $ 
            map (\(tag, attrs) -> 
              case attrs of
                [] -> Nothing
                [a] -> Just (a, tag))
            $ tagAttributes $ H1 $ parseTags html ]

-- 主函数
main :: IO ()
main = do
  html <- getHtml url
  print $ parseHtml html

步骤说明:

1、首先,我们导入了需要的库和类型。

2、我们定义了爬虫爬虫Ip信息和网站URL。

3、然后,我们定义了一个函数getHtml,该函数使用Network.HTTP库获取指定URL的网页内容。我们使用了爬虫Ip,并将响应体作为字符串返回。

4、接着,我们定义了一个函数parseHtml,该函数使用Data.ListData.Maybe库解析网页内容。我们查找了所有H1标签,并提取了它们的href和text属性。

5、最后,我们在主函数中调用getHtml获取网页内容,然后调用parseHtml解析内容并打印结果。

注意:这个示例程序假设网页的内容是HTML,并且H1标签有href和text属性。实际的网页内容可能不同,你可能需要根据实际情况修改这个程序。此外,这个示例程序没有处理网络错误和其他异常情况,你可能需要添加适当的错误处理代码。同时,这个示例程序没有使用爬虫Ip,你可能需要根据实际情况修改这个程序。

标签:Python,text,爬虫,爬取,href,proxy,网页内容,import,多线程
From: https://blog.51cto.com/u_13488918/8274705

相关文章

  • Python逐行读取文件常用的三种方法!
    在Python中,读取文件是非常普遍的操作,而逐行读取文件则是最常见的需求。那么Python如何逐行读取文件?为大家介绍常用的三种方法,一起来看看吧。1、使用readline()方法逐行读取文件在Python中,我们可以使用readline()方法逐行读取文件。该方法用于读取文件的一行内容,并将文......
  • 彻底掌握Python中 * 号
    Python中的*号是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号。而在Python中,它的用途远不止如此。本文总结了Python中*号的所有用途,以供参考。1.算术运算号用来做算术运算几乎是所有编程语言采用的方法,在Python中,号可作为乘法运算和指数运算。......
  • cmd输入python弹出windows应用商店的问题
    一、环境操作系统:windows10Python:3.11(最开始是3.7)二、起因pip要求升级结果无论是在cmd还是pycharm的控制台都没反应于是我就在cmd输入python发现打开的居然是windows的appstore,我还以为是我的python坏了就安装了3.11.结果涛声依旧。于是我就问了问度娘有了答案,就是删除微软app......
  • 【misc】[HNCTF 2022 Week1]python2 input(JAIL) --沙盒逃逸,python2环境
    查看附件,这次有点不太一样,这次是python2的环境只有一个input函数,但是python2的input函数可是不太一样:在python2中,input函数从标准输入接收输入,并且自动eval求值,返回求出来的值在python2中,raw_input函数从标准输入接收输入,并返回输入字符串在python3中,input函数从标准输入接收输......
  • Python学习笔记:必应壁纸下载
    GitHub上开源的必应壁纸API作为数据来源。--1.开源地址https://github.com/zenghongtu/bing-wallpaper--2.请求接口https://bingw.jasonzeng.dev/一、接口使用说明1.API接口:https://bingw.jasonzeng.dev2.分辨率resolution默认分辨率为:1920×1080,其他可设置参数......
  • PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SV
    全文下载链接:http://tecdat.cn/?p=26219最近我们被客户要求撰写关于银行机器学习的研究报告,包括一些图形和统计输出。该数据与银行机构的直接营销活动相关,营销活动基于电话。通常,需要与同一客户的多个联系人联系,以便访问产品(银行定期存款)是否会(“是”)或不会(“否”)订阅银行数据......
  • python获取当前日期的前一天
     fromdatetimeimportdatetime,timedelta#获取当前日期today=datetime.today()#获取前一天的日期yesterday=today-timedelta(days=1)#格式化日期为所需的字符串格式date_str=yesterday.strftime("%Y-%m-%d")print("前一天的日期是:",date_str) ......
  • python json.loads()字符串转json
    python json.loads()字符串转jsonimportjsonimportrequestsres='''{"code":200,"message":"success","duration":147,"result":{"angle":0,"height":368,"tables":[],&qu......
  • numpy.meshgrid() in Python
    numpy.meshgrid函数用于从表示笛卡尔索引或矩阵索引的两个给定一维数组中创建矩形网格。网格函数是从MATLAB中得到启发的。语法numpy.asarray(arr,dtype=None,order=None)参数x1,x2,…,xn:array_like表示网格坐标的一维数组。indexing:{‘xy’,‘ij’},可选输出的笛卡尔(‘xy......
  • Python实验:Socket编程
    实验六Socket编程一、实验目标:了解TCP协议原理、标准库socket的用法、熟悉Socket编程。1.TCP协议原理:TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于流的协议,用于在计算机网络中传输数据。它是互联网协议套件中的一部分,通常与IP(Internet......