diff --git a/.temp_to_pub/.gitignore b/.temp_to_pub/.gitignore index 90d8558..9a8f15e 100644 --- a/.temp_to_pub/.gitignore +++ b/.temp_to_pub/.gitignore @@ -1,4 +1,4 @@ -EasySpider_MacOS_all_arch/easyspider_executestage +EasySpider_MacOS/easyspider_executestage EasySpider_Linux64_x64/user_data EasySpider_windows_x32/user_data EasySpider diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/.gitignore b/.temp_to_pub/EasySpider_MacOS/.gitignore similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/.gitignore rename to .temp_to_pub/EasySpider_MacOS/.gitignore diff --git a/.temp_to_pub/EasySpider_MacOS/First time open please see this (The package is damaged and cannot verify the developer's solution).txt b/.temp_to_pub/EasySpider_MacOS/First time open please see this (The package is damaged and cannot verify the developer's solution).txt new file mode 100644 index 0000000..bd1d8b5 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/First time open please see this (The package is damaged and cannot verify the developer's solution).txt @@ -0,0 +1,25 @@ +Due to the complex security settings of MacOS, the issue of being unable to open software due to the "unverified developer" message may occur upon the first attempt to open the software. Please refer to the following GitHub document to see how to open software and perform tasks on your MacOS version: + +https://github.com/NaiboWang/EasySpider/wiki/MacOS-Guide + +For the Arm version, if it shows "the package is damaged", you need to use the following command to modify the package attributes: + +xattr -cr Your EasySpider.app file path + +For example: + +xattr -cr /Users/your_username/Downloads/EasySpider_MacOS/EasySpider.app + +Then try to open it again. + +When executing the xattr command, if an error like the one below occurs, you can ignore it. After the execution is finished, you can open the software: + +xattr: [Errno 13] Permission denied: 'EasySpider.app/Contents/Resources/app/node_modules/node-window-manager/build/node_gyp_bins/python3' + +File access permissions must be granted, but microphone permissions are not needed at all. The author is also unclear why microphone access would be requested, so it can be refused. + +During the execution of tasks, if an error similar to the one below occurs, it can also be ignored: + +Traceback (most recent call last): + File "multiprocessing/resource_tracker.py", line 209, in main +KeyError: '/mp-5dxyey7c' \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/If chrome exits when designing a task, see this.txt b/.temp_to_pub/EasySpider_MacOS/If chrome exits when designing a task, see this.txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/If chrome exits when designing a task, see this.txt rename to .temp_to_pub/EasySpider_MacOS/If chrome exits when designing a task, see this.txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0. Note - This folder is not the task storage directory for the EasySpider software under MacOS.txt b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/0. Note - This folder is not the task storage directory for the EasySpider software under MacOS.txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0. Note - This folder is not the task storage directory for the EasySpider software under MacOS.txt rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/0. Note - This folder is not the task storage directory for the EasySpider software under MacOS.txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0. 注意 - 此文件夹并不是MacOS系统的EasySpider软件的任务存储目录,只是示例任务文件.txt b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/0. 注意 - 此文件夹并不是MacOS系统的EasySpider软件的任务存储目录,只是示例任务文件.txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0. 注意 - 此文件夹并不是MacOS系统的EasySpider软件的任务存储目录,只是示例任务文件.txt rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/0. 注意 - 此文件夹并不是MacOS系统的EasySpider软件的任务存储目录,只是示例任务文件.txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/0.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/0.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/0.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/1.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/1.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/1.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/1.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/10.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/10.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/10.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/10.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/100.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/100.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/100.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/100.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/1000.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/1000.json new file mode 100644 index 0000000..56313ac --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/1000.json @@ -0,0 +1 @@ +{"id":0,"name":"Electronics, Cars, Fashion, Collectibles & More | eBay","url":"https://www.ebay.com","links":"https://www.ebay.com","create_time":"5/25/2023, 8:17:54 PM","version":"0.3.1","containJudge":false,"desc":"https://www.ebay.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"Open Page","value":"https://www.ebay.com","desc":"List of URLs to be collected, separated by \\n for multiple lines","type":"string","exampleValue":"https://www.ebay.com"},{"id":1,"name":"inputText_1","nodeName":"Input Text","nodeId":2,"desc":"The text to be entered, such as 'computer' at eBay search box","type":"string","exampleValue":"iPhone","value":"iPhone"},{"id":2,"name":"loopTimes_Loop_2","nodeId":4,"nodeName":"Loop","desc":"Number of loop executions, 0 means unlimited loops (until element not found)","type":"int","exampleValue":5,"value":5}],"outputParameters":[{"id":0,"name":"para1_link_text","desc":"","type":"string","exampleValue":""},{"id":1,"name":"para2_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/itm/204347640092?epid=18041714849&hash=item2f9411891c:g:yS0AAOSwc1Vjq2a2&amdata=enc%3AAQAIAAAA0Grlm4pb%2BLpo%2FTp7ipxK6jITVW9vHRTIRtMBSSUufzWHPN4YJUxndPOxUxJsvvtRTN3A1SCvPtafL6H9ZhrBsS7FYbcH9uCYeAw1ugNxdTkCT5KJ2EhP8JqAVphIOqcw2FG6jp%2F%2BTf4eOl9MS%2F4XDrZ8ft1RmUtXFnuAwm%2FvyjOwy5OLLpGKwR6erX8zW3QoJ0DQAS%2FJ4r%2F4jeibkT69QiDO3d32Rov0pdIDO72andbE9tYTzdxuxWk3RgasoPnJWXBlhELrH5ggaXWp9LmilI0%3D%7Ctkp%3ABFBMuLuPo4pi"},{"id":2,"name":"para3_image_address","desc":"","type":"string","exampleValue":"https://i.ebayimg.com/thumbs/images/g/yS0AAOSwc1Vjq2a2/s-l300.webp"},{"id":3,"name":"para4_link_text","desc":"","type":"string","exampleValue":""},{"id":4,"name":"para5_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/myb/WatchListAdd?item=204347640092&pt=null&srt=0100080000005099935eea570d06429b655d8c91da9ea4db4035a6167fdf6b7b1af51ddd35ae0b88aa90a24a76c0cdd755b02d6d156aadc3baa53440abb15a39018f0461d3d2ca754448d10f4ff5c5cc68ca07ed536011&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"id":5,"name":"para6_link_text","desc":"","type":"string","exampleValue":"New ListingApple iPhone 12 - 64GB - Blue (AT&T)Opens in a new window or tab"},{"id":6,"name":"para7_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/itm/204347640092?epid=18041714849&hash=item2f9411891c:g:yS0AAOSwc1Vjq2a2&amdata=enc%3AAQAIAAAA0Grlm4pb%2BLpo%2FTp7ipxK6jITVW9vHRTIRtMBSSUufzWHPN4YJUxndPOxUxJsvvtRTN3A1SCvPtafL6H9ZhrBsS7FYbcH9uCYeAw1ugNxdTkCT5KJ2EhP8JqAVphIOqcw2FG6jp%2F%2BTf4eOl9MS%2F4XDrZ8ft1RmUtXFnuAwm%2FvyjOwy5OLLpGKwR6erX8zW3QoJ0DQAS%2FJ4r%2F4jeibkT69QiDO3d32Rov0pdIDO72andbE9tYTzdxuxWk3RgasoPnJWXBlhELrH5ggaXWp9LmilI0%3D%7Ctkp%3ABFBMuLuPo4pi"},{"id":7,"name":"para8_text","desc":"","type":"string","exampleValue":"AppleiPhone12-64GB-Blue(AT&T)"},{"id":8,"name":"para9_text","desc":"","type":"string","exampleValue":"NewListing"},{"id":9,"name":"para10_text","desc":"","type":"string","exampleValue":"AppleiPhone1264GBAT&T"},{"id":10,"name":"para11_text","desc":"","type":"string","exampleValue":"Pre-Owned"},{"id":11,"name":"para12_text","desc":"","type":"string","exampleValue":"·"},{"id":12,"name":"para13_text","desc":"","type":"string","exampleValue":"·"},{"id":13,"name":"para14_text","desc":"","type":"string","exampleValue":"·"},{"id":14,"name":"para15_link_text","desc":"","type":"string","exampleValue":"5.0 out of 5 stars.10 product ratings - Apple iPhone 12 - 64GB - Blue (AT&T)"},{"id":15,"name":"para16_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/p/18041714849?iid=204347640092#UserReviews"},{"id":16,"name":"para17_text","desc":"","type":"string","exampleValue":"5.0outof5stars."},{"id":17,"name":"para18_text","desc":"","type":"string","exampleValue":"$285.00"},{"id":18,"name":"para19_text","desc":"","type":"string","exampleValue":"orBestOffer"},{"id":19,"name":"para20_text","desc":"","type":"string","exampleValue":"Shippingnotspecified"},{"id":20,"name":"para21_text","desc":"","type":"string","exampleValue":"fromUnitedStates"},{"id":21,"name":"para22_text","desc":"","type":"string","exampleValue":"​"},{"id":22,"name":"para23_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":23,"name":"para24_text","desc":"","type":"string","exampleValue":"Model"},{"id":24,"name":"para25_link_text","desc":"","type":"string","exampleValue":"Apple iPhone X - apply Model filter"},{"id":25,"name":"para26_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520X&_dcat=9355"},{"id":26,"name":"para27_text","desc":"","type":"string","exampleValue":"AppleiPhoneX"},{"id":27,"name":"para28_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":28,"name":"para29_link_text","desc":"","type":"string","exampleValue":"Apple iPhone 8 Plus - apply Model filter"},{"id":29,"name":"para30_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208%2520Plus&_dcat=9355"},{"id":30,"name":"para31_text","desc":"","type":"string","exampleValue":"AppleiPhone8Plus"},{"id":31,"name":"para32_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":32,"name":"para33_link_text","desc":"","type":"string","exampleValue":"Apple iPhone 8 - apply Model filter"},{"id":33,"name":"para34_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208&_dcat=9355"},{"id":34,"name":"para35_text","desc":"","type":"string","exampleValue":"AppleiPhone8"},{"id":35,"name":"para36_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":36,"name":"para37_link_text","desc":"","type":"string","exampleValue":"Apple iPhone 11 - apply Model filter"},{"id":37,"name":"para38_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252011&_dcat=9355"},{"id":38,"name":"para39_text","desc":"","type":"string","exampleValue":"AppleiPhone11"},{"id":39,"name":"para40_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":40,"name":"para41_link_text","desc":"","type":"string","exampleValue":"Apple iPhone 12 - apply Model filter"},{"id":41,"name":"para42_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252012&_dcat=9355"},{"id":42,"name":"para43_text","desc":"","type":"string","exampleValue":"AppleiPhone12"},{"id":43,"name":"para44_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":44,"name":"para45_link_text","desc":"","type":"string","exampleValue":"Apple iPhone 13 Pro Max - apply Model filter"},{"id":45,"name":"para46_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252013%2520Pro%2520Max&_dcat=9355"},{"id":46,"name":"para47_text","desc":"","type":"string","exampleValue":"AppleiPhone13ProMax"},{"id":47,"name":"para48_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":48,"name":"para49_link_text","desc":"","type":"string","exampleValue":"Apple iPhone XR - apply Model filter"},{"id":49,"name":"para50_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520XR&_dcat=9355"},{"id":50,"name":"para51_text","desc":"","type":"string","exampleValue":"AppleiPhoneXR"},{"id":51,"name":"para52_text","desc":"","type":"string","exampleValue":"-applyModelfilter"},{"id":52,"name":"para53_text","desc":"","type":"string","exampleValue":"StorageCapacity"},{"id":53,"name":"para54_link_text","desc":"","type":"string","exampleValue":"128 GB - apply Storage Capacity filter"},{"id":54,"name":"para55_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=128%2520GB&_dcat=9355"},{"id":55,"name":"para56_text","desc":"","type":"string","exampleValue":"128GB"},{"id":56,"name":"para57_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":57,"name":"para58_link_text","desc":"","type":"string","exampleValue":"256 GB - apply Storage Capacity filter"},{"id":58,"name":"para59_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=256%2520GB&_dcat=9355"},{"id":59,"name":"para60_text","desc":"","type":"string","exampleValue":"256GB"},{"id":60,"name":"para61_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":61,"name":"para62_link_text","desc":"","type":"string","exampleValue":"64 GB - apply Storage Capacity filter"},{"id":62,"name":"para63_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=64%2520GB&_dcat=9355"},{"id":63,"name":"para64_text","desc":"","type":"string","exampleValue":"64GB"},{"id":64,"name":"para65_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":65,"name":"para66_link_text","desc":"","type":"string","exampleValue":"512 GB - apply Storage Capacity filter"},{"id":66,"name":"para67_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=512%2520GB&_dcat=9355"},{"id":67,"name":"para68_text","desc":"","type":"string","exampleValue":"512GB"},{"id":68,"name":"para69_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":69,"name":"para70_link_text","desc":"","type":"string","exampleValue":"1 TB - apply Storage Capacity filter"},{"id":70,"name":"para71_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=1%2520TB&_dcat=9355"},{"id":71,"name":"para72_text","desc":"","type":"string","exampleValue":"1TB"},{"id":72,"name":"para73_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":73,"name":"para74_link_text","desc":"","type":"string","exampleValue":"32 GB - apply Storage Capacity filter"},{"id":74,"name":"para75_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=32%2520GB&_dcat=9355"},{"id":75,"name":"para76_text","desc":"","type":"string","exampleValue":"32GB"},{"id":76,"name":"para77_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":77,"name":"para78_link_text","desc":"","type":"string","exampleValue":"16 GB - apply Storage Capacity filter"},{"id":78,"name":"para79_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=16%2520GB&_dcat=9355"},{"id":79,"name":"para80_text","desc":"","type":"string","exampleValue":"16GB"},{"id":80,"name":"para81_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":81,"name":"para82_link_text","desc":"","type":"string","exampleValue":"8 GB - apply Storage Capacity filter"},{"id":82,"name":"para83_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=8%2520GB&_dcat=9355"},{"id":83,"name":"para84_text","desc":"","type":"string","exampleValue":"8GB"},{"id":84,"name":"para85_text","desc":"","type":"string","exampleValue":"-applyStorageCapacityfilter"},{"id":85,"name":"para86_text","desc":"","type":"string","exampleValue":"to"},{"id":86,"name":"para87_text","desc":"","type":"string","exampleValue":"14+watchers"},{"id":87,"name":"para88_text","desc":"","type":"string","exampleValue":"​"},{"id":88,"name":"para89_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":89,"name":"para90_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":90,"name":"para91_text","desc":"","type":"string","exampleValue":"Sellerswithhighestbuyerratings"},{"id":91,"name":"para92_text","desc":"","type":"string","exampleValue":"Returns,moneyback"},{"id":92,"name":"para93_text","desc":"","type":"string","exampleValue":"Shipsinabusinessdaywithtracking"},{"id":93,"name":"para94_link_text","desc":"","type":"string","exampleValue":"Learn More"},{"id":94,"name":"para95_link_address","desc":"","type":"string","exampleValue":"http://pages.ebay.com/trp/index.html"},{"id":95,"name":"para96_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":96,"name":"para97_text","desc":"","type":"string","exampleValue":"·"},{"id":97,"name":"para98_text","desc":"","type":"string","exampleValue":"Timeleft"},{"id":98,"name":"para99_text","desc":"","type":"string","exampleValue":"7d23hleft"},{"id":99,"name":"para100_text","desc":"","type":"string","exampleValue":"(06/02,05:14PM)"},{"id":100,"name":"para101_text","desc":"","type":"string","exampleValue":"FreeInternationalShipping"},{"id":101,"name":"para102_text","desc":"","type":"string","exampleValue":"fromIsrael"},{"id":102,"name":"para103_text","desc":"","type":"string","exampleValue":"​"},{"id":103,"name":"para104_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":104,"name":"para105_text","desc":"","type":"string","exampleValue":"$98.06"},{"id":105,"name":"para106_text","desc":"","type":"string","exampleValue":"orBestOffer"},{"id":106,"name":"para107_text","desc":"","type":"string","exampleValue":"+$19.61shipping"},{"id":107,"name":"para108_text","desc":"","type":"string","exampleValue":"fromAustralia"},{"id":108,"name":"para109_text","desc":"","type":"string","exampleValue":"17watchers"},{"id":109,"name":"para110_text","desc":"","type":"string","exampleValue":"​"},{"id":110,"name":"para111_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":111,"name":"para112_text","desc":"","type":"string","exampleValue":"$39.00$89.00"},{"id":112,"name":"para113_text","desc":"","type":"string","exampleValue":"FreeInternationalShipping"},{"id":113,"name":"para114_text","desc":"","type":"string","exampleValue":"fromSriLanka"},{"id":114,"name":"para115_text","desc":"","type":"string","exampleValue":"​"},{"id":115,"name":"para116_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":116,"name":"para117_text","desc":"","type":"string","exampleValue":"·"},{"id":117,"name":"para118_text","desc":"","type":"string","exampleValue":"Timeleft"},{"id":118,"name":"para119_text","desc":"","type":"string","exampleValue":"6d12hleft"},{"id":119,"name":"para120_text","desc":"","type":"string","exampleValue":"(Thu,05:51AM)"},{"id":120,"name":"para121_text","desc":"","type":"string","exampleValue":"fromCanada"},{"id":121,"name":"para122_text","desc":"","type":"string","exampleValue":"​"},{"id":122,"name":"para123_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":123,"name":"para124_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":124,"name":"para125_text","desc":"","type":"string","exampleValue":"Sellerswithhighestbuyerratings"},{"id":125,"name":"para126_text","desc":"","type":"string","exampleValue":"Returns,moneyback"},{"id":126,"name":"para127_text","desc":"","type":"string","exampleValue":"Shipsinabusinessdaywithtracking"},{"id":127,"name":"para128_link_text","desc":"","type":"string","exampleValue":"Learn More"},{"id":128,"name":"para129_link_address","desc":"","type":"string","exampleValue":"http://pages.ebay.com/trp/index.html"},{"id":129,"name":"para130_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":130,"name":"para131_link_text","desc":"","type":"string","exampleValue":"5.0 out of 5 stars.1 product rating - Apple iPhone 13 mini - (Unlocked) - 128GB - 256GB - 512GB - Excellent"},{"id":131,"name":"para132_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/p/4049279846?iid=364259821916&var=633771011461#UserReviews"},{"id":132,"name":"para133_text","desc":"","type":"string","exampleValue":"5.0outof5stars."},{"id":133,"name":"para134_text","desc":"","type":"string","exampleValue":"$499.00$619.00"},{"id":134,"name":"para135_text","desc":"","type":"string","exampleValue":"to"},{"id":135,"name":"para136_text","desc":"","type":"string","exampleValue":"BuyItNow"},{"id":136,"name":"para137_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":137,"name":"para138_text","desc":"","type":"string","exampleValue":"Sellerswithhighestbuyerratings"},{"id":138,"name":"para139_text","desc":"","type":"string","exampleValue":"Returns,moneyback"},{"id":139,"name":"para140_text","desc":"","type":"string","exampleValue":"Shipsinabusinessdaywithtracking"},{"id":140,"name":"para141_link_text","desc":"","type":"string","exampleValue":"Learn More"},{"id":141,"name":"para142_link_address","desc":"","type":"string","exampleValue":"http://pages.ebay.com/trp/index.html"},{"id":142,"name":"para143_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":143,"name":"para144_text","desc":"","type":"string","exampleValue":"Shippingnotspecified"},{"id":144,"name":"para145_text","desc":"","type":"string","exampleValue":"fromUnitedStates"},{"id":145,"name":"para146_text","desc":"","type":"string","exampleValue":"eBayRefurbished"},{"id":146,"name":"para147_text","desc":"","type":"string","exampleValue":"​"},{"id":147,"name":"para148_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":148,"name":"para149_text","desc":"","type":"string","exampleValue":"to"},{"id":149,"name":"para150_text","desc":"","type":"string","exampleValue":"$313.73"},{"id":150,"name":"para151_text","desc":"","type":"string","exampleValue":"Saveupto10%whenyoubuymore"},{"id":151,"name":"para152_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":152,"name":"para153_text","desc":"","type":"string","exampleValue":"Sellerswithhighestbuyerratings"},{"id":153,"name":"para154_text","desc":"","type":"string","exampleValue":"Returns,moneyback"},{"id":154,"name":"para155_text","desc":"","type":"string","exampleValue":"Shipsinabusinessdaywithtracking"},{"id":155,"name":"para156_link_text","desc":"","type":"string","exampleValue":"Learn More"},{"id":156,"name":"para157_link_address","desc":"","type":"string","exampleValue":"http://pages.ebay.com/trp/index.html"},{"id":157,"name":"para158_text","desc":"","type":"string","exampleValue":"TopRatedPlus"},{"id":158,"name":"para159_text","desc":"","type":"string","exampleValue":"+$98.06shipping"},{"id":159,"name":"para160_text","desc":"","type":"string","exampleValue":"fromAustralia"},{"id":160,"name":"para161_text","desc":"","type":"string","exampleValue":"14+watchers"},{"id":161,"name":"para162_text","desc":"","type":"string","exampleValue":"eBayRefurbished"},{"id":162,"name":"para163_text","desc":"","type":"string","exampleValue":"AppleiPhoneSE(2ndGeneration)64GBCricketWireless"},{"id":163,"name":"para164_text","desc":"","type":"string","exampleValue":"·"},{"id":164,"name":"para165_text","desc":"","type":"string","exampleValue":"·"},{"id":165,"name":"para166_text","desc":"","type":"string","exampleValue":"·"},{"id":166,"name":"para167_text","desc":"","type":"string","exampleValue":"​"},{"id":167,"name":"para168_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":168,"name":"para169_text","desc":"","type":"string","exampleValue":"$22.95"},{"id":169,"name":"para170_text","desc":"","type":"string","exampleValue":"10watchers"},{"id":170,"name":"para171_text","desc":"","type":"string","exampleValue":"​"},{"id":171,"name":"para172_text","desc":"","type":"string","exampleValue":"Sponsored"},{"id":172,"name":"para173_text","desc":"","type":"string","exampleValue":"$4.74"},{"id":173,"name":"para174_text","desc":"","type":"string","exampleValue":"fromChina"},{"id":174,"name":"para175_text","desc":"","type":"string","exampleValue":"to"},{"id":175,"name":"para176_text","desc":"","type":"string","exampleValue":"$80.36"},{"id":176,"name":"para177_text","desc":"","type":"string","exampleValue":"ResultsPagination-Page2"},{"id":177,"name":"para178_link_text","desc":"","type":"string","exampleValue":""},{"id":178,"name":"para179_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=1"},{"id":179,"name":"para180_link_text","desc":"","type":"string","exampleValue":"1"},{"id":180,"name":"para181_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=1"},{"id":181,"name":"para182_link_text","desc":"","type":"string","exampleValue":"2"},{"id":182,"name":"para183_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=2"},{"id":183,"name":"para184_link_text","desc":"","type":"string","exampleValue":"3"},{"id":184,"name":"para185_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=3"},{"id":185,"name":"para186_link_text","desc":"","type":"string","exampleValue":"4"},{"id":186,"name":"para187_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=4"},{"id":187,"name":"para188_link_text","desc":"","type":"string","exampleValue":"5"},{"id":188,"name":"para189_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=5&rt=nc"},{"id":189,"name":"para190_link_text","desc":"","type":"string","exampleValue":"6"},{"id":190,"name":"para191_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=6&rt=nc"},{"id":191,"name":"para192_link_text","desc":"","type":"string","exampleValue":"7"},{"id":192,"name":"para193_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=7&rt=nc"},{"id":193,"name":"para194_link_text","desc":"","type":"string","exampleValue":"8"},{"id":194,"name":"para195_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=8&rt=nc"},{"id":195,"name":"para196_link_text","desc":"","type":"string","exampleValue":"9"},{"id":196,"name":"para197_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=9&rt=nc"},{"id":197,"name":"para198_link_text","desc":"","type":"string","exampleValue":"10"},{"id":198,"name":"para199_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=10&rt=nc"},{"id":199,"name":"para200_link_text","desc":"","type":"string","exampleValue":""},{"id":200,"name":"para201_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=3"},{"id":201,"name":"para202_text","desc":"","type":"string","exampleValue":"ItemsPerPage"},{"id":202,"name":"para203_text","desc":"","type":"string","exampleValue":"60"},{"id":203,"name":"para204_link_text","desc":"","type":"string","exampleValue":"120Items Per Page"},{"id":204,"name":"para205_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_ipg=120"},{"id":205,"name":"para206_link_text","desc":"","type":"string","exampleValue":"240Items Per Page"},{"id":206,"name":"para207_link_address","desc":"","type":"string","exampleValue":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_ipg=240"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"Open Page","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.ebay.com","links":"https://www.ebay.com","maxWaitTime":10,"scrollType":"1","scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"Input Text","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"gh-ac\"]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"value":"iPhone","allXPaths":["/html/body/header[1]/table[1]/tbody[1]/tr[1]/td[5]/form[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/input[1]","//input[contains(., '')]","id(\"gh-ac\")","//INPUT[@class='gh-tb ui-autocomplete-input ui-autocomplete-loading']","//INPUT[@name='_nkw']"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"Click Element","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"gh-btn\"]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":"2","scrollCount":1,"scrollWaitTime":1,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/header[1]/table[1]/tbody[1]/tr[1]/td[5]/form[1]/table[1]/tbody[1]/tr[1]/td[3]/input[1]","//input[contains(., '')]","id(\"gh-btn\")","//INPUT[@class='btn btn-prim gh-spr']"]}},{"id":4,"index":4,"parentId":0,"type":1,"option":8,"title":"Loop","sequence":[6,5],"isInLoop":false,"position":3,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination__next11\")]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":5,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[7]/div[4]/div[2]/div[1]/div[2]/ul[1]/li[64]/div[2]/span[1]/span[1]/nav[1]/a[1]","//a[contains(., '')]","//A[@class='pagination__next icon-link']"]}},{"id":6,"index":5,"parentId":4,"type":0,"option":2,"title":"Click Element","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"//*[contains(@class, \"pagination__next\")]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/div[7]/div[4]/div[2]/div[1]/div[2]/ul[1]/li[64]/div[2]/span[1]/span[1]/nav[1]/a[1]","//a[contains(., '')]","//A[@class='pagination__next icon-link']"],"loopType":0}},{"id":5,"index":6,"parentId":4,"type":1,"option":8,"title":"Loop","sequence":[7],"isInLoop":true,"position":0,"parameters":{"history":6,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div/div[4]/div[2]/div[1]/div[2]/ul[1]/li","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[7]/div[4]/div[2]/div[1]/div[2]/ul[1]/li[1]","//li[contains(., 'ModelApple')]","//LI[@class='srp-river-answer srp-river-answer--NAVIGATION_ANSWER_COLLAPSIBLE_CAROUSEL']"]}},{"id":7,"index":7,"parentId":5,"type":0,"option":3,"title":"Collect Data","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":6,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"para1_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/a[1]","//a[contains(., '')]"],"exampleValues":[{"num":0,"value":""},{"num":2,"value":""},{"num":3,"value":""},{"num":4,"value":""},{"num":5,"value":""},{"num":6,"value":""},{"num":7,"value":""},{"num":8,"value":""},{"num":9,"value":""},{"num":10,"value":""},{"num":11,"value":""},{"num":12,"value":""},{"num":13,"value":""},{"num":14,"value":""},{"num":15,"value":""},{"num":16,"value":""},{"num":17,"value":""},{"num":18,"value":""},{"num":19,"value":""},{"num":20,"value":""},{"num":21,"value":""},{"num":22,"value":""},{"num":23,"value":""},{"num":24,"value":""},{"num":25,"value":""},{"num":26,"value":""},{"num":27,"value":""},{"num":28,"value":""},{"num":29,"value":""},{"num":30,"value":""},{"num":31,"value":""},{"num":32,"value":""},{"num":33,"value":""},{"num":34,"value":""},{"num":35,"value":""},{"num":36,"value":""},{"num":37,"value":""},{"num":38,"value":""},{"num":39,"value":""},{"num":40,"value":""},{"num":41,"value":""},{"num":42,"value":""},{"num":43,"value":""},{"num":44,"value":""},{"num":45,"value":""},{"num":46,"value":""},{"num":47,"value":""},{"num":48,"value":""},{"num":49,"value":""},{"num":50,"value":""},{"num":51,"value":""},{"num":52,"value":""},{"num":53,"value":""},{"num":54,"value":""},{"num":55,"value":""},{"num":56,"value":""},{"num":57,"value":""},{"num":58,"value":""},{"num":59,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para2_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/a[1]","//a[contains(., '')]"],"exampleValues":[{"num":0,"value":"https://www.ebay.com/itm/204347640092?epid=18041714849&hash=item2f9411891c:g:yS0AAOSwc1Vjq2a2&amdata=enc%3AAQAIAAAA0Grlm4pb%2BLpo%2FTp7ipxK6jITVW9vHRTIRtMBSSUufzWHPN4YJUxndPOxUxJsvvtRTN3A1SCvPtafL6H9ZhrBsS7FYbcH9uCYeAw1ugNxdTkCT5KJ2EhP8JqAVphIOqcw2FG6jp%2F%2BTf4eOl9MS%2F4XDrZ8ft1RmUtXFnuAwm%2FvyjOwy5OLLpGKwR6erX8zW3QoJ0DQAS%2FJ4r%2F4jeibkT69QiDO3d32Rov0pdIDO72andbE9tYTzdxuxWk3RgasoPnJWXBlhELrH5ggaXWp9LmilI0%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":2,"value":"https://www.ebay.com/itm/125654726090?epid=235058061&hash=item1d419af5ca:g:jKkAAOSwHkNjkqJZ&amdata=enc%3AAQAIAAAA0KVOKlfLx7XsyUBFyBTCyW8R6qQV8F9O8BnuAJ3cF1XEcbGjHgbenk3tf%2BVhgq1I3bCO8dhI8JigiAobZHmzbei7FM6RViOniWADo4YtPfKV8mE2EQKeBhxX5d5lgDtwCeoA7F6ZZjPoZL%2BCQfrSIKM2CtW9%2Fywc%2B115p%2BSfDALw0bZacX%2FoMyntKaw%2F2Zc%2FfIhR%2FTx2PDwQ8DMdy590K2d7pB8G0e5onxABchqDR3o6QnbgOrW1KViWLFsngiobkXsB7Y615a1Jss0Xcxv%2BSwA%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":3,"value":"https://www.ebay.com/itm/125921528476?epid=16044554351&hash=item1d51820a9c:g:5nUAAOSw4tpkVZJQ&amdata=enc%3AAQAIAAAA0GycVNjpztmJKb%2BBaTdtZNteE%2Fy4AVXrXwopCF8isII7418Ruoq92tlxCH0hqgZGEJAsoIrbvLsXQKgEp8eXVk8aWF07IQyTxbTF1AjWEZ%2BMCb1GMwRbh2Oz9DjNlE9cmSHOKFoyCRtI3YFlz5xXsCm4h6YFE96fWprUGwTIY0FXg2Uol3uGPS6gl7czY3wxqv2i5wOi6TBSm7zSUKfzvul0YuoRAyYA4Ytu4g8UWiUOYdCw3jjZbCH0AJ%2FO9bDFhrhHgCmjkUR4XDiXZe0LcKQ%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":4,"value":"https://www.ebay.com/itm/354499126227?epid=25023700375&hash=item5289cb63d3:g:zoQAAOSwwqZjWEiw&amdata=enc%3AAQAIAAAA4LhURfPaJT7fzaYHDEMQpQkN1zCMFKdPeJiMN%2B5c1DXPObw9Y5iv6QncB7oijhrwozVDMXaesCt6h1C%2BsmBNkI5jPjcdph6xpwbBONoorzBF7bibHfH0tPOk2NijlyBdxbgXWJQIPYdOkdpN90avRGazHKJmPyt1ehV9pVjrvv3QMV9sz6lak7ZjmURIKtqYG%2B9B%2FeK48LicHv8ElL2wLwkUyX9xryxCrrx92hYMB13ww2RbD4mIaQKKHKWshFxg74CsdGT6kxflk1OyVvRPYXPg6jPmolOTAgr108mCYuC6%7Ctkp%3ABFBMuLuPo4pi"},{"num":5,"value":"https://www.ebay.com/itm/165950326528?epid=117394868&hash=item26a3690700:g:5yIAAOSwCMRkSNvZ&amdata=enc%3AAQAIAAAAwAcNLrIyYwFGbrXgvcdpNX1esAO0%2FmHJ3TeYtULeeih%2BVMfcz4Z50%2BtOQx%2FsYDGZN83yFQXfKDkRG601W2Mok3RbJyt3s1Qli44UgrzmKbG6zL7HHhp16Nzcv92KY8fRkgnYJd2Tj%2FtSlPHeroWM68tAWSCgeRygvlOK2%2Boe%2Fn8iL%2Fwn84QoQJdLlUHwMXwQfgD3k%2Fr%2BT18f%2FvbSM4iAU4WqvKH9pMsL11yAMoYfnx%2BEtrfiAj2IfD1PcHVFpT%2Bwrw%3D%3D%7Ctkp%3ABk9SR7i7j6OKYg"},{"num":6,"value":"https://www.ebay.com/itm/334883786743?epid=203706854&hash=item4df8a10ff7:g:rTMAAOSwGxRkUVOe&amdata=enc%3AAQAIAAAAsDpMKq1e%2BZ96Kryn0RCHC7T5kNnut2gKo8sZPTtwg7TfFn56gqcMnd8yJsDyIRFcXHGbYYoQKUtova18VTHs%2F6W3gXvg%2BtI%2FlUVUb7b7a9vyrqAW0m6M8Rab6gzOqHcsqM4oWprBPF2vkrc8gtddJDkxZ7P3fyfcjsmAkp2jebdBnWPayVArgL9kDMxNPgXBtS%2FaTFFYqzfmxyXs4G2uhVqx8q0hAJ6bFKqi%2BCwhY7Ax%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":7,"value":"https://www.ebay.com/itm/125946822312?epid=4050016431&hash=item1d5303fea8:g:JkYAAOSwwRxkanAH&amdata=enc%3AAQAIAAAA4A0z74dPTHUYMHyCDXwCtF%2F0kW5urkM3S%2FpvhEVNy4rdLiflFfegOW4EVinTQy0ABMpK6gZWc6HURlVhFzwIAWNsVCwgMXIkq9QfVGljEI05qviEOCwxKvmO9OuTdJuENJygXMkgiCBQcYW2nXN8hzkZQGEkhZPgsx6YUqmNca8rDOa86B2JuqchQRvPTFS42S3U3gCVwm16kNiW%2FsWb4CN94UoJfrEL36CQSTwZ5GA%2F6K2LuPIa8gwbj9LwX9mLAZBVkllba1PemJUlAogbvKusVmg1LlFNbZfXSiss3G%2BE%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":8,"value":"https://www.ebay.com/itm/374711273285?epid=225076071&hash=item573e884745:g:4wQAAOSwOh5j6z5H&amdata=enc%3AAQAIAAAAwEcb684K5uCldH4Ib8V9IDNrSMhRsMO0tp%2F0vqNcXv77jC5vMztxFzEnA%2Bih52li4BAMeLQe8OX92IV3nv3cRzo1U4IsJT6B%2BJbdmkDxDw4BBcCMY9oauXFMJwyeTcvKCZ6ywxenQBE5a9FUorSV%2Bl1Q50xpxjnU1fd4cd2sfZym1nMqca3p7EEEQTudI0kcd6k5xxEnMX3oeKzWqk6MzS4SZdD44boXaIshJkJ0FQjxbfW%2F%2BW3iQOac8uB48lRl%2FA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":9,"value":"https://www.ebay.com/itm/155478954794?hash=item243344932a:g:lqAAAOSwSd1kJiS8&amdata=enc%3AAQAIAAAAwILIejpgLZMURxpGzNBghrR643%2FrbWk2pdjH9oIXX3MpJXgqJkiQ1nTbhkQ2alCnR9Bhx4ittONzSPXSnBQ2tOEj8d5RT8Uz8lcG76NxcA4YB18z%2BwKIrde67lI4ofTiTEsZdNKYBL9ad3NNru%2B8L7S2isUCmCvRfq9GmUAF%2BiDzIuxh7AeWJSIx6MY0qZJDAp66rrLNV8oqwEjp%2FqqkpCAETvbgLiL4T7fITDmefLL5gI09YtcPseF5uNznmYzUMg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":10,"value":"https://www.ebay.com/itm/145082432845?hash=item21c7963d4d:g:FEsAAOSwcURkYNbm&amdata=enc%3AAQAIAAAA4GaTsQp1ikZTKddFPmYlX2bbLOUFwsxZTv%2Bk48aXmacGB7kuLpTuF%2FCttnsPEWt0FT3TOJ4G%2BOl9e%2B4iFlx68iv7GDObBJgJuJ%2BXh5jGY621s7TxlF20J5%2BNwppAWhmDSGWuJoO0hvxCDiFTRwr%2BBHRzBdkrW%2BOXvaGsGsvYZOdPeP2A%2B9D%2BDVyFXp3osF0BVVdx0blvQ%2F78SUAFQJKWznaXzyyGBgGkfCaqmgEezeNq1%2FGcFQauufyjjRJ8v4ZdlWMKuh5rxIBYA9VYKbDgRVfhgsUdWCNaVTuKVVRqdI19%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":11,"value":"https://www.ebay.com/itm/354799969746?epid=228231541&hash=item529bb9e5d2:g:SPcAAOSwv5NkX4hF&amdata=enc%3AAQAIAAAA4PTKlXFmZj3DaH5VQGPjqN0h1hOVqEdZ0Ka8EiqLmZ%2BjrycvEsRcQc7teFyuWq6djY3QfVgWvSS%2FmZ9Lvug2d1m1%2FGWFTfkMBzY7ZRe4JPsZ5ly26nm2SFqATnebsy2p1ktQqhIsSt6HlO8uadi4gRwI6pWOBmLDyXnD05xyn5%2F%2BoydGtx%2FNTs4wiXcuSvMKz3ZCMVqF%2FDR6B0AV6ygyTgYX5QMmRT%2BkjB3eCyrxG7BGz9j7umVh9V%2BEP6PVQZWmmz5Wl4QjAPKHb%2BXov43oFXh0pIP%2F3bp80klbwK3c91gZ%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":12,"value":"https://www.ebay.com/itm/144982418317?epid=6023706166&hash=item21c1a0238d:g:1qAAAOSwXIFkDBQZ&amdata=enc%3AAQAIAAAAwH4NXfSyalOuMGZhaYME8Mlyj0T1eO%2FhimC3vMPA8kQWyzaY0gwjsvAM7KQWOAfR0a9oSkq6i68G99dySqknKqD9ty%2Bek6nhwWqeOHdCJs377BFIpXdZ0PCExj86wplBN0PzoQvElKjRZ5tUIkAZnORfjnOOfpWdfT5nVbWEm%2BxK6Dtqo6vjsaT5Ad%2FAJmGRa73%2Bbzf6PR6Sm7E0dUnqnAtm7g1IAAJIOC%2FXyLV%2FGVKIh4fWS%2FR%2Bk1jscwct3HCuww%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":13,"value":"https://www.ebay.com/itm/185270042866?hash=item2b22f480f2:g:ZDgAAOSwLEth8GLy&amdata=enc%3AAQAIAAAAwNxut9FM4YWQktgg8Qt2IHJeXaDLEl0t49xK8TVZGbgT6GL8oLzTjD4ucy4yfQQVmf1Z5ZWhBUf24EfnOBxKP6SfgohiCOkO94qytubmyW%2BPpYa2Jd0eJk9w9OLAvTG0UVOorbMRTYonA0HfBYpKkQDPKXkSBQGosTcU0cgSZb5WfI8WEKu6ZJSy48PGp3ZNxDvrYq7125hnLArg0suRn4EQzQ%2FTeQLkb%2FalwM6kBpuWWPfsow%2BEB6PN7IywvXMQwg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":14,"value":"https://www.ebay.com/itm/275481671524?epid=23037864010&hash=item4023fcb764:g:zDQAAOSwMpBjNzBD&amdata=enc%3AAQAIAAAA4EBVD4UR2ZERn%2Fh4WTuiwSMCKUGd%2F9q6tB4kAVeO7ho8FWMvxffMPNfj%2Bo%2FpHsCzSzoyZsZdc7MsjRZp0jIKyaf7%2BZLclrS6VRH4A10zQ%2BwIjYPbgX95o3bs%2B6CgQYK3E7yroo8Qmd8XO%2FmYQftry6MNTXAWK9iM8dmPRQyuaiB8ribidWhSrTHEuleWR4a%2BKGeFz2%2Bp7l%2F2e4%2Fp9UQ414T5oK%2FSFCD5fBqsowldPC1cpCOeHChLa1doOx%2F19ge24XSn0P1bwCANEQR8Ibb%2BD42PZ2GU%2BHnThGP0B4oi2Q2h%7Ctkp%3ABFBMuruPo4pi"},{"num":15,"value":"https://www.ebay.com/itm/114978392281?epid=13041697744&hash=item1ac53f08d9:g:ryIAAOSw19phOQhW&amdata=enc%3AAQAIAAAA4MfAq90Uc5q%2BnEARf5asnqlnTSG7LvmP1omUJ0JygGULWmjyupiFGf73opsF8JQZk2RUqx2JKUXtADzEJ5DDJQ06s3sfd09hk%2FTwxF8F2KLf6n%2FZC8FJB5ZWStOE6j94kYrz2JlQ4HkgCKjCURvubUSX7SRBthVcKq0E%2FuXr1dRwE2Soks6LYbmRhBNHcQZ8SyUWrfnR6PhUMlVu%2F1BmtjZm9oUEUImFfxOEOoAn1SepB2yaUUFcUI%2FBfw%2FPskNhxhMF%2BewzTY1fVGdLyP8yz6bj2AU8RBDD6b0OPvB3%2FVJY%7Ctkp%3ABFBMuruPo4pi"},{"num":16,"value":"https://www.ebay.com/itm/364259821916?epid=4049279846&hash=item54cf93c95c:g:NZEAAOSwcUFkSqcI&amdata=enc%3AAQAIAAAA0CXD3yZZ1NEcEif%2FnfLFcPGoaHeVVFFArldVpjfyqxXOTmCuatO64KNKOs3zzOdCbgX0VKCk5Nm6nq81JD4xvPfdf1NqrD7Adc2DQzwgoQ4uIrArrBNt4chGcx0GklCBwbQJzykPgf9LJ0thnk8JM4mE2ukliv3y573mUYjjNMhqlu%2FLrbHwrjmz0gcNxLVNIwkohlLYiwkCqwzWvQlK1CnVMmV3NjStvOokV3JlO%2BbeDoZg5IgiTVtWo3U8RylpCr%2FRPUjc3%2FPFHk820KPtA0E%3D%7Ctkp%3ABFBMuruPo4pi"},{"num":17,"value":"https://www.ebay.com/itm/275816818931?epid=25034208609&hash=item4037f6a8f3:g:qukAAOSw05JkRwuv&amdata=enc%3AAQAIAAAAwChwMuAHpgZ209pV1aJ1NB9dRGXYIZUUcSKDQsdB3qIEFr3vu51BpKdOTcp4Wa6lu7yDiVViRmX3CNi2OosjtFEeY6ZlibAVmJtRMwy%2BkE%2BnGuEq5KVViFCj7d5zrTm2j%2FuPnESV%2FI%2BtvA3V7Zzkx5nq8ftYuHqmLCSQjtn%2B9M%2BhSjE5WOX12rl%2BT2ntBsBd%2BmiCDOic5cKloZuQw5hApBYqaYgcXyQ14Thj5OyeIJFGOHnhEVtvnHA9jhcRh2ZsVg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":18,"value":"https://www.ebay.com/itm/402974377238?epid=168494364&hash=item5dd3250516:g:SfUAAOSwvzZkBA2S&amdata=enc%3AAQAIAAAAwKDz2YpgJQoUTGmznSSxFiSUegpATPnA2U7uTMlL0cF6BOanI41Ydc8DAd79fmbccaB7rJhqVubVMcwnKFmStbe7EH7DqTcgI%2BansiR5OQcblmFszet1l4MXmmTmk9Wbe8akeJCmM49lwO9k8PSlCTt5XOO%2FuYxHPCqwiZZ3qaPBVHTllVoLT4UN3%2Fns628HQo7cv9USSdwaBVVxFKXe%2BdaaERK3GGv7fSysbWQH8A2bY%2BnKBCM0nBWJC2H5GlscSA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":19,"value":"https://www.ebay.com/itm/134473303459?hash=item1f4f3bc5a3:g:S5QAAOSwccZkAdGW&amdata=enc%3AAQAIAAAAwOYZvXXRZy2aIFnCLSRw%2FnzLvcGxF3WbXV%2FjK4dViu%2Bt1JBMdnrFNVDole%2FcOLuGxFHej4zII16zhP382NKiZ4qlh9lxhmtSiMigyGJH8GPJs7qJLlbk9w3JjJQpLM3rWWYLcbz1tv2mBCKJipdfN1jnca3xtLPsHBWGn2TVIjDRNpKlNuIDGMF7Y13H9uh%2BCSTDqDpzwoy1YxoqCGg21FcJMhHT0%2F2VDxA3GaviTzafHm%2BaVZLbK3e5E5K83FOvww%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":20,"value":"https://www.ebay.com/itm/185690561222?epid=13039001065&hash=item2b3c051ac6:g:hrEAAOSwxOxjWETt&amdata=enc%3AAQAIAAAAwEjar6E2wQdv%2Fthh50KilzigmaKGpuEs%2Fh6sQTFyUwbU%2FXh4DCC6JppxOR4A9CkTtbYqGLXjtMkDRgG7Ca01%2B8xRsRFe5C7vuLj4w%2BePUXxo6vfI03%2BRRaaPlSFTf9W5OicpSyO8MQmWm2hVFKfCyJhGeLn6uViUb2OBgp18IJPU5HBmdyu9mkUOPsQnu1jpl8aweQ5Bpz%2B4jdGKdH2YiS3AskOE3LD4N0SVlP0BuEQ1KFZQS%2B6oAw3cgQyyj4ianA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":21,"value":"https://www.ebay.com/itm/404303235453?epid=16042424111&hash=item5e2259c97d:g:FRAAAOSwYTpkbMnb&amdata=enc%3AAQAIAAAAwHjJcGlb5ZC8hhPfyiRmgZ8mXkGNzPqVPZjTpmd3gb9OuPsuW9e7ApE%2FDjrsZLRMK6jsdFICHDYyF7VGHOgD2%2Fzwqeby6JaeuwhZq60FnpU%2BuF9oyF%2FAi%2BK5Q07RRoVpdtratU8fmLBYYwmhk3cHnNbnRh9T60pO9fZM7nODQlarZkhpHjPGTpbIhoZvES2q%2BKanf%2FlVwz0NnWgES2WiNgiowmrnuhm594HoTMu442LSzMI9th%2F5eVrHK5pVhG9QAg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":22,"value":"https://www.ebay.com/itm/164949098513?epid=19049315735&hash=item2667bb8011:g:ICcAAOSwN~Vg5rB2&amdata=enc%3AAQAIAAAA4GkD9szwmJRjOSt3zF3Fk7Hmo1tcPbP3CQ1qxmPrOPWRGOMy5ZHdCqHfIQeALZu%2F%2FOa9SPUL2uG6lUGBXsitKQiyZ%2FNXwrZCHW2zy%2BK6BiXX5NLk5T6hl%2F8XqThtUKc9EF9xyjGAOLgloREeuUyuEwoiBtTnIOSOgYZ0emTNfAxFosvpvM0swOS4cLFbwfRGOiUH75ojHZn%2Bip2%2BdzgPwn2Zy8Z%2Fsl384RGpSshOGePfZndiht8zgfbiq8WUpSVAmZh4XZy3rdwMoOrBcRIGj2Jqwy%2FRaXgnNm7oQ8byN1Vp%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":23,"value":"https://www.ebay.com/itm/115809329987?epid=28034216926&hash=item1af6c62343:g:nn0AAOSwKJxkUw91&amdata=enc%3AAQAIAAAAwKDD%2FXgq3EVd4n81oXnDU68JmqmHQwoJStuYVChNYzWEj60LpjTbJYasC4w4GAL%2BwGKWOL2to1cQ2sWQnSoJMY9HxyPJkmASNGkgFvj1f%2B3ifh4H%2Bta61cZ2qDvj%2F6Lycvi82FHVVEaX3gyeYbChuTvhsrej3Sxvr8WHiPPshgvjaF72%2FeJAMa9K5fiESO2lCp528s4RmGGLjvaECBfPN7RZxNB9ppxJr7Eu9wP31nWfZJV5VbWjVSkTDOQzO62MDw%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":24,"value":"https://www.ebay.com/itm/155381097344?epid=114805777&hash=item242d6f6380:g:jxcAAOSw-5dj1I~O&amdata=enc%3AAQAIAAAA4KhQZEEtzmogXdTiYCEhbPwdI9mYHXRF3He5cSa1Bzv6rLA95yAKrFJUWZUkLDNWgPuIyd7QwT88PpRXUriFaciBz1zbX9lJDpZ7oc6zgaQHVrd1%2B88MhBAdX7hETlEWRVc65ZwB3aL%2FPetd%2FnY4dME5HZfMhGDNJyOFPPAZ2Tj5GWOseOTNGZSeWnaJPGLci4nNKypCubUqHJs3J9Kz8mt8YMIOpnt%2BxfWvgl9aPW%2F4AlcxZgvXg6xK9iEPdPn4N14NKnQZf7Hyc%2FDwfex4idPGzUZZ%2B7vDrPyWEDqGz1uP%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":25,"value":"https://www.ebay.com/itm/354806773691?epid=239099257&hash=item529c21b7bb:g:Fk4AAOSwg2Vkbp-Y&amdata=enc%3AAQAIAAAAwC%2FBrM4tFWJaQRC%2F3vv9mUoteYksdUryk1bthxUSKtVnRr4g%2F4ZfhelANjRK%2F3GL%2BCWsDXBddthqQAc3GVYq%2B9NhtjCu7JTS%2FYtW%2FhmNFvsYlwKwYHdH9L2xIelFcBZcI5rhCaCfJjn79OdUZHYCRoULOVfbEeF5F3knBdyyqnvCO8y6L6UJJpu%2FNDrsdl0BqNrOGV1R%2Bun6JfVO9Izo43oEp6GdMJWabuzfnCsQqiko716IhD%2FWNu%2F%2FKRiraxt34g%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":26,"value":"https://www.ebay.com/itm/266226088419?hash=item3dfc4fb9e3:g:I1sAAOSwwMBkP-LE&amdata=enc%3AAQAIAAAA0M8hEJzrbybUCEbONS96IOahWzXLESyTE9DQN9PrWhUXXz1kv3R%2BL0Pgb9aXOMm2Sb41eDHVEcNyK%2Bw4KZmMZBGNuQese8LF2fzd3znf3N%2FACrprit4uYAPMVKHYoJXYxejZWYMp64WWb5HRxgSDIu02CNDsfY5ZCJQyJZEZPeVZzT4aEmjkXMIjJmTfYTBG9O5%2FDjFq83nSJsg3PNL%2Fqq6Wm70vQH5HmfnNQNlnGHpBZk5QLjBtmwn2uFIsUrimiWVvX3QtnSsZF6%2Fj4%2Bvfd5k%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":27,"value":"https://www.ebay.com/itm/134292112524?epid=240455149&hash=item1f446f048c:g:P1IAAOSw7uVjUqVK&amdata=enc%3AAQAIAAAA4FBeMKYz8fy1ALbNWF%2FbmR%2F7TvK8Cq9gv4%2BVjG5YEa9UXnFcx%2BA35y90j7Tw43Dsz4VbInb5YcGDIgqBp6dOLfUmZKWkVOm2qrsOvizIqwPOkNOdi2wyofQqJ10aPh1NehKlRTwWezbS8tDKtuO1z%2Fu%2BkA84EZfNgoEtRsTKiAbqsayfDa8kcPwdmzWY0fym0McJ4adtpY6qYGwESEnc2vyPWmLLrnzByLgvyjs6eVb%2BA5CH7BcpPQpw94x9TX6jTg8Y0iCGWn244wvoCSIiPcC3gBzhGwB1Agk4Oij76JIp%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":28,"value":"https://www.ebay.com/itm/266065363299?epid=216202149&hash=item3df2bb4163:g:JHIAAOSwij1hUn8z&amdata=enc%3AAQAIAAAAwHysjyK3iBkwGkPgad7z7J6xiSCsfGVo6Tz4GQiyvBgc2ub8VmOJ4VG8q%2B%2FnXc8nAwZUeIVQzLYdNHZw9neA3ooPCLM9hwJzHNmVGzEZx%2BeLnr6s00EJZEPhJQpPow2eiIbXcVcL5y5EI7SxTg2D0imfXM6QHaqszWYiYQYbn%2FZbAhYoK6UxvbgNzvwDdfYX6eomG9%2FS2e%2F%2B7FsMebSNB9wjvQUug91DdC4fjvSvv9QG1wseRc6lNrWqQCwZzLxROA%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":29,"value":"https://www.ebay.com/itm/115766777445?epid=24032598957&hash=item1af43cd665:g:E2wAAOSwSd1kNXQ1&amdata=enc%3AAQAIAAAA0B57qhWT%2FfPxSqvmXObKn%2FYfDWP5awYdk2daFCpt5DZVNMIxdg%2BRD2b3AmbauvlGc5VTU1DQ8bP2wV3xDcLBKBGRpqgqzab8uG3zpnF2%2BPkKmT9OJVKVw3xypbFmrcVw1YahfyVB5B%2BV4B0OtAn95ci%2BXy%2Fo68ilU7PFOty%2B%2FDbOhYEegcwTZL%2F8%2F8%2FgWh3Fc8ksUePP9bMtxdQ%2FUsJkxtCW9RjFufH%2FEIpxTberMDYZQK2pmVWhWU4yNDkRw7%2FCXPiyChxsXp5aJfBBrvzZ%2Fqs%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":30,"value":"https://www.ebay.com/itm/255807288830?epid=26034221296&hash=item3b8f4d75fe:g:ukgAAOSwSTZjYqeH&amdata=enc%3AAQAIAAAA4H7Xj9pKskZseMSa6m0FvE03TlPmoQGqPaWxclDuReXey26jBkzGv0OxVXXd560xUE6xVDmYAgG0PmBIyFnq9UmnFXy%2FmbAyUb5j%2FcX9wmF9zkaGUgVSDQMHWM8XAmDvj1dRvGmPslWx103hMQ%2B1ScSRo17BMkl3IhF86K6IJW0CYemImMsELh55ZNARvz97Pe1hhoC3QdWuwKVvIfYQbq4MTS955b3Ws7BjgERzYCX1UfiCWpHb2fSoHegsP%2BXdO1Ar%2FB0R2S75M02sDtSfC%2BFWErAP6j%2BZYrYN8prpytp1%7Ctkp%3ABFBMvLuPo4pi"},{"num":31,"value":"https://www.ebay.com/itm/115382464560?epid=9051376057&hash=item1add54b030:g:4ZkAAOSwdOdifmmg&amdata=enc%3AAQAIAAAA0ATkmb33SPhvPEqzrrkGqKzYBSpkOgybw%2Bpl5rw%2BhgRtnBZ6TT9bbR%2F24d410FVzuXLN7IVbF0Gm2K4akt83UCM%2BGvGllSbpJRAwakrECV2raJoBFVZKMAgcvIDkMTzZkPuhSzQJj%2B2BTsWuqlRRdAPjEx5zV5mr27Mxe2PYs9km%2BwEywWiGCg2zk%2FVDkanqrauk0H5fcnuXK2C%2Fp%2BJNiE9qY0WaBsa8qok%2BGC5r7GDOxghiLFIHIDOwUZwehaNPsWMfln1S7CvzzuCl23eXYUU%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":32,"value":"https://www.ebay.com/itm/145095967799?epid=28038172042&hash=item21c864c437:g:iJYAAOSwtOFkaqFa&amdata=enc%3AAQAIAAAA4GX8FnYd4XSnVPWzjhYQ%2FSil88rzouAOWybF4wnIg78wkvDvl9D4v2AqMBS2efmsmjiirHO%2FMlXBCe%2FX4uLUneEm2cH2%2FqYLrs%2BX8IApA3eLntlECgKGtOrZ4iLoORIMK6ZYyc2EHwdG6kRweJsJxsktTcZWi6enG7kBDStBPqn2hUIgnSh3QHk5u4QJCWf3%2FZg%2B33zkTLiwM3ZlD6eu1PXmiVkrYnb1C3SYLRHWtNS5w8v3DdP%2FNlzruz7BB7wcMDMsHAUuuYaua%2F4ZdKZ%2F3w5k2YdEzh0gS%2B9mfp9QrqEz%7Ctkp%3ABFBMvLuPo4pi"},{"num":33,"value":"https://www.ebay.com/itm/195558414119?hash=item2d88309727:g:Ll8AAOSwRaJjw2kO&amdata=enc%3AAQAIAAAA4MRvCnxT%2BEEOBEoL4Efas%2Fc0R%2FD%2FDNfkp7WyFXSu%2BI%2BovFMxBspfs4N8dIQ53MznQDSMZi1fqk04WT7Uz9rNsIXERMr0c6BBiDRyiChacUklUJvFr8gwuZmveA0Soky7%2BRmzuWd15pS%2FZWOFwZzXUhsWLRYVHx2lpWCXX2NHc3ZY%2BGly4BFngwLLA7PJ7gfSMvDWoPW%2FfljYcKnoKnfd9HB44Wy%2BYCScrZSBRGTTfjLPmFfOViwDotPAfpey3eBHpwaA3CRVOOpbfBxqWyqnYU5b1PpW6EWh%2F37F0PchBxOJ%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":34,"value":"https://www.ebay.com/itm/295672429475?epid=13023706562&hash=item44d7733ba3:g:HuoAAOSw~2JkbSM8&amdata=enc%3AAQAIAAAA4DO5fOzkW40L6mfgQfEMxnDMEuMVT6ytC1CLQEKJU6SSkYzsQlxN8GsB0HovV%2FBDC3e%2F34HSJufV%2BX4dip0QKBkQ4%2F9cSDf9YELtG0h5uhDSyUffYOfpk0Oq7Arr11lmE8n6MgWM7T%2BiOHKfItBWIU2Z1pcjldbc9jW2wRSegyqlZQhUZLQy0J56KiOuV8h1BkHBpXETC0dL6pwLF4NqAzT7Cb9QW3%2B7x4DM5j%2F4QH3a3SUE8dOylsVw1Yi8W2uCKieLAZqHHJjYjhk1Za0%2BcEo4dhUWcDGgIdk%2B8WgBrNo1%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":35,"value":"https://www.ebay.com/itm/115791017894?epid=15054602795&hash=item1af5aeb7a6:g:IIwAAOSwmTNjxuMX&amdata=enc%3AAQAIAAAA4NiRYcMzaAzlMzTXrpuAsy4NGJjeW%2FhGRkz096Q73raAQLVBWzKR0i7%2BgS27jqKu%2BjW%2FCNotSvFKxfRCZ9qdELWq0c%2BOR3%2BmkoR7ol%2Fdxm98ve3oFIspoCj1jE0TAyon034EVnXiS1NP4w%2BarAb7pOGGOFzbQCdDN717PfexKRpBfwQVNksLr4RdYILhFIygaJC9fnRb4mezxBij4TdjdFH0%2Fn2%2FSZZlvS%2Bebct9IyxwXlvWktHJojqRu%2BVhjCCYBX58vmqvdVw1L6fiUtO2lwFy4sxV2BGtJcj5Ke97iVw8%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":36,"value":"https://www.ebay.com/itm/266249818815?epid=109338283&hash=item3dfdb9d2bf:g:rwgAAOSw3b5kWGuE&amdata=enc%3AAQAIAAAAwGK2P8yGPXbKb1Od9OXYevRulGTQZhwbQCwxe7luuCJA%2BesHWPCaGx8ur9IzuY2%2FdQXKQeW91Zt5kk0S4q8Ll%2B%2FTNX1wfOyMxJ8AtTDXt04ktCgrzH9sBObTf3VNbRZlzTPxAokHvY2PLOHuGyB2R342ZY5r1xMyXvSnyM2LRrXarOUc5MGNxgVat5QuT6EKQh5jK7NdjB9pxMedEw5KQUC%2BG2N2lqTFj%2BPGQLoYcGwW1yQPUr2GHtWj48kDqZgTsQ%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":37,"value":"https://www.ebay.com/itm/275715071825?hash=item4031e61f51:g:oNIAAOSw9PZj~JpM&amdata=enc%3AAQAIAAAAwDyMsT%2BV8EBIIHfIybtIt3IlcpnwsSx288jrHY6Ci4dd%2FL1T%2FiYU5ER6fw5A9KmVy8Rz4o%2B174lms3hVV9QAuLDUZ8wPsQEfJ29uVHe1QdVP2MZbXbK%2FS5BMzgHdHfxj%2FO1AvtCU0u31gfDqWiNOcz5Th%2FgAVx6UWf89z0NIkr6eg3qHTNNpx8RBhMOh3JafF1wkjWDrXsZuiRIh57SwvPJ61Vs%2BSw%2BP4pHwFoDiP2wmiE%2BvG%2B1WPy3ALvCZqeHu4g%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":38,"value":"https://www.ebay.com/itm/374717197868?epid=228576574&hash=item573ee2ae2c:g:S8wAAOSw6Ztkbs9Z&amdata=enc%3AAQAIAAAAwDEljen93ERQcKwp2gIxhfgVcGPx0jxowHt3fb76GczjSU%2BtC9JV90U%2BAQqLjznm0%2B7%2FIFmX7nwHbemlal1O9UZjNJJJZYX5HF0Au0idSN3FE4TFIG1d6SLg4aAN3PX5N69dqV8W4%2BobeSoOwm%2FSMwlaCQ7aiszkAjWyHo2l2FCAQQ9HvTlZD71R4DMw72aIFW0ylcSajb7NRoMsa2hN%2BWsKKQ8Quf%2BXipdF8r4rIn0mPIddjERmrVEKU6DtP%2B7TYw%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":39,"value":"https://www.ebay.com/itm/125804984552?epid=240377092&hash=item1d4a8fb8e8:g:ZM8AAOSwtBlkBYcD&amdata=enc%3AAQAIAAAA0O%2F530L3bHGyboQ47tj6fn%2F4fVulvks9Txui5I6VuiAMJbXa672NqFL2rLCO0aFIQ0oU39mClfQXuzk8x8ZCcul8relCd0eM1Q5H7EFgevbIIz6YmF10StJ5vIJMIPdWiUr%2FVhjmVdPe2cVualVEuPBRD1EQXRWZaCWw7AkOOalZIlI55Q8UrkIS7QbY0ILy2PnvOl%2F%2FTOLoWKVLEHs1OfGZciXBqkBSIbiwvdQwjX6dfyYg0eRNdJ4SVfRRfJ7ZMjTGDpIFdS%2FFZgT2pCg6XHs%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":40,"value":"https://www.ebay.com/itm/265911650646?epid=3041485877&hash=item3de991c956:g:6NMAAOSwP3xjNxwy&amdata=enc%3AAQAIAAAA0GQWZqCbWUn0oDBhCeRY1UoDIeeh1r78xeaN%2FWHdi1RiY25H1KvXfviwnGyfzigUCGSXJ%2Bo3OKctToGyPZ25Lf9ewoAew%2FN6d7N%2BsrlYRku6pWBeq06w%2B13bN3o%2FWY559LiSJFp7GJRUw8Xjr1mJnJ0CreVKdbles52P%2FW542i%2FuxmRcKLCq8xqN6ZgODHZYvjZwAS8y6urIgjm8q6WnhMcUrlMqZ1D0yUPBUVeD4iALfkoiSVkHNG9CvbF4mgkWp084qCkfwd4MLhXXQqD7cLc%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":41,"value":"https://www.ebay.com/itm/225032084926?epid=25023700421&hash=item3464f51dbe:g:S64AAOSwVgpiqlye&amdata=enc%3AAQAIAAAAwEGdNUt9XXTnVaZ%2B6L1iET1GDi5hSqDPp7Ed0u%2F5BOBXhVEBEjvafKhZSg7Xo%2Fh4kHVvTCJnIogKcbrRhYCgIXXS3coML5B2pZoZbpEcFgB5I51vOl6Jx%2FjNBwaLXy5ivr8LzHu7bOHsRrLqqbj%2FxUpgYqDlNNYRzNXDUNxsDpDk2xOAtEzkKw4Wgtwn8HG30JTIUtcCbeAYucQiWiOiZ3%2B51kfEOqWq8a4TgeBgUACcqCvqn7OiBPFXXamQVhtL1Q%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":42,"value":"https://www.ebay.com/itm/115813971678?epid=240434004&hash=item1af70cf6de:g:HE8AAOSwD7pka-ye&amdata=enc%3AAQAIAAAAwG9cmrsZyl1i9jsstX91tXt64HORisj2KlJmakCyc5eRSLazgmA0VtsJS6a6QVIBGtEXCPG8xI0Hq86MNqc6UmFTEU%2FuStTSV1GqTWsfr3xkG3armBiHg7wbF68cD5Q%2FWzy2DHNxJWQt%2ByNKiOX5GA2Aulz9gRHhqepG9FSoOXxk%2Bb1rviAiw%2F2i5Gt5ud7AKAG9ilCnd9pWT%2FIyMuCOsx%2F%2FP1a8DpjjK0hh2KAslSrwS5lZjrDPgI4PiZH%2FN1WHkQ%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":43,"value":"https://www.ebay.com/itm/394434823940?epid=168534247&hash=item5bd625c704:g:lhMAAOSwgFFj0von&amdata=enc%3AAQAIAAAA0M%2FIzKUyjuP64oVYg2zv2N6K0HV8Dsw%2FcT3wTKNUiZSokldICyCOb7GbFiXSs3fmfa93GI8a9rBaVOMm2AaOIqOybFBoOnlqRXbs4GXpgulmg%2FGHWkZGFn8zzIcgtj5CBqWeQ5R2Czc9UkTohD7nS2eRTh6pbzFeG60F6iam3QnQRpc88l7EnlsJE0FCF4%2BrsbHx8zKRX5UmeNhVK0sQA84brDNzyasZ6%2FhEC9W7kdjSUUBT93BHd0Hj9%2BRQTLoMSLaeKqTmapZfBBNjFajwGlU%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":44,"value":"https://www.ebay.com/itm/385598884410?epid=99987131&hash=item59c77c0a3a:g:C5sAAOSweQ5kWId5&amdata=enc%3AAQAIAAAAwB54SZlQW0p5KQfu0jP9GzVeGbX3lxFThmXOyzH3N2cedj0%2BqlnwMOB1CZSnoCp%2FKHUsfviRkW2bteQEMlnc0fbzbebo66rf%2F4nzJAoUA0yCAmi28L23hP41DQaIdajplNpkgpiQHE%2FZOcGb0IR6FmdQXth48g33MhZtTZpOYcMPiPGtwcJzxiU7sARsGQ9r%2BeCNw%2B67Wf50K37KiXWi9rL14eq0tV%2FfbdpLhQOh2%2F3GE9Ql8WAo%2FBON6jMhqrY6WQ%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":45,"value":"https://www.ebay.com/itm/204347780252?hash=item2f9413ac9c:g:dDIAAOSwHcJkbpJo&amdata=enc%3AAQAIAAAA4G5qAeMF2c%2Fp99qdl2e4QsV%2B9aDtdjvQIZUr2nsDzWMWSsXB%2F%2BZ7eyYMzXEY5iVWihbArwRh1MXNQhrXqXr0MfNkZuBlWyZmH9nyoSPtydaQF9jgRRk24O1%2Fhdqo%2FFAutR%2B%2F%2FcDnpG6HbNCktiCvn%2BvnVM1DJQZebRcLjEyQb3mXY%2BHMzxPMXEt1KDhRBk1eVVLjfh9ybQFHWHVXS95gOi%2FxI%2FSMglgvtfC8Mwf7xumjQshU04N%2FopuFbJcMBcv0kOhBbvnBa1m99nbbnDl5pbux1ugkP087E%2BNasU4Khg2Y%7Ctkp%3ABk9SR767j6OKYg"},{"num":46,"value":"https://www.ebay.com/itm/385255115294?epid=240210725&hash=item59b2fe8a1e:g:cxYAAOSwuk9jgIHV&amdata=enc%3AAQAIAAAA4LbLMVk7C1FrgwVIu0YOX625J56lmBpPXnvKUAHwy61DAlTwJRki2R4xdtuifLPLOK%2F%2BKxBZ9IqnkyFqOI8L%2BIHF6VsEXhF%2FkWh%2Fhnvu8iKt9OY%2BaaX%2FndpEMGK5ovkZpsi6g2GVKBUOQ8nukJMR7gpyJnYPMBrr%2FXBg%2Bopp52JjuvqSONdf%2BU%2FAAf%2BvL0Wm6jn2JND%2BUU%2BKB9XHAMmYFAKLHqMmmcP7urDDm58vYgkgbzg8vPrnJNmM5LSGGwQlrwzoU%2BMAW%2FIIqyuN4QdKlvOUZmHVte%2FDlh09tPm4qL39%7Ctkp%3ABk9SR767j6OKYg"},{"num":47,"value":"https://www.ebay.com/itm/314579175553?epid=240282853&hash=item493e614881:g:keMAAOSwZXxkWJz9&amdata=enc%3AAQAIAAAA4CVZ5wnwqlSCS1YWHcywmTZIpoSq9MKZI4x0QzZgnK4WlYGrgYTGb60fL6LBfKIZUEYQI75%2BTi5sIY6y3ZsDcJOW719%2BUzOLulrXpw9A2xsYYS%2FAkkZAfz96VSHqW2jOLF6VHmMp%2B2kjieViO%2Bn%2FiNjJtaSYBp7VRBihr5P4GMg7GlGaWQnmbByhZXmIdPsqZBqR7Ze8YSII8qEUEcG%2F2ba9RY%2BUmeaw7kxtSNonQwLciOh0GRCar9PDDCFFJ9xBmoYAy2xC00KdUHdh5nn8dOpIAcOWrNiFa6kwu8QRPrFP%7Ctkp%3ABk9SR767j6OKYg"},{"num":48,"value":"https://www.ebay.com/itm/266246155894?epid=1981183096&hash=item3dfd81ee76:g:aJcAAOSwW0tkVH8D&amdata=enc%3AAQAIAAAA4NSs43V0ZX3nNh7xuPaSq0MPHD1DrbFDQ31ldqm0v3BUSdkBlQ9PcsinazAjKxQVV7cZykPIg1%2B3UqbpNe9Qr0pn1OC6mWSsNy%2BMgWmEVX3JxdlM6ydk8KNbbDkvLmC4uppTCLrVYNjWz2EpiIunrM6oqzM04E2HAU%2B53wgVmeF95t82tJje2WjqZvBI5k0ptDwfv9p6ZnXwptK036YEk6xQaeNuLVuaI64n230LC5di6kp%2B5GH2hhnrPFs0%2FQVzPEE8AOXeETLqkuB3ZoUxvTlQYPs64UjEyeJMzuG4kDId%7Ctkp%3ABk9SR767j6OKYg"},{"num":49,"value":"https://www.ebay.com/itm/404172805708?epid=109317046&hash=item5e1a93964c:g:egoAAOSwEshkBX29&amdata=enc%3AAQAIAAAA4L%2Bcyf5A6p8lpN3tDYasPFw4urgf1QST9NSS8%2FujqkoYqEraBlAEaAn36Zl1fkENjNqSEx9a6k9N2T16vwc7zWhu%2B4m80XC9prUmMyRjxKDxgPuus3J6ZrVWX0fCbEhoIB5NjQ3HVV42pHF9cp8peiwDmnPTuj46ixo0cC%2FD5WFVxNqQBMcHS44EcNKkGdTmcnhscthTBo5qSuJr7InRcb%2Fs1iXcYBtaqn%2FPzhXP%2BdTX0rpgowXXJd1JJIUhVN%2BYp4KbYvJGFKfjjLOXnSTrLt3jpfIPpEgsMUsx1hmXktSg%7Ctkp%3ABk9SR767j6OKYg"},{"num":50,"value":"https://www.ebay.com/itm/175601025545?hash=item28e2a30209:g:pSUAAOSwAjpj39Uh&amdata=enc%3AAQAIAAAA4JtdtqZGD0DaxP5aiGhnDTagbGu9f5fI6DnTdtAAlfVjypwfAjWgvmYBGxCLWAsaOvxD5DkU6Z1%2B8pS5j7JzI53ltdrlRLdWlcO6zGQJ5FKgxIuzP9AB%2BJOoTi7ymG3NX7LB%2BFoRxaGk8H7TRqnbcUTsFu08q6Wviac1RRVOEqW1jRFdfz1SSPWugqJHa5q6Q54rDvHGaWffGml3qTueC3kO%2FHZsLC%2FkmBEF7j8cbyZ6D3uDYv9P36tYESwXEutIHJGymO0%2BLvl66enzEOKDV%2FJ28OXegbTLMdtjxt42%2BKSa%7Ctkp%3ABk9SR767j6OKYg"},{"num":51,"value":"https://www.ebay.com/itm/404172716323?epid=103043220&hash=item5e1a923923:g:aCEAAOSw5S5kBYOD&amdata=enc%3AAQAIAAAAwAEqcW61tzBYheFVcLKrztFd4jbhNUIOlCu68BpaMltkmVY%2BE%2Fh%2FXAp%2BEq56fYG%2FbSq1ZMGqTatNiRWd5Znnd1d%2F%2FQeDwfoaYUF1oEgOC%2FR16f%2BixZlEF8UnigH3S8ai0c7lWYlqf7NP6m544ROPYrvUgaTcabd2TpqG7pRR2vqO4Am65Sx85AI8hVQwfV8CPDnx8f0tfz9EmqQXpgzFHeTOGRRjBQEUN47JT1lPCDWLr5VbHVBeS64jOjqUF9QeQQ%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":52,"value":"https://www.ebay.com/itm/234972583475?epid=7034636144&hash=item36b5751633:g:JUcAAOSwOPpkNcYf&amdata=enc%3AAQAIAAAAwJTowa4riLMf%2BrbZOFjw%2FpyMKzDMbbpRVveSoVPkntnGByRtXr0iOLGQbuhx8d1GTd%2Fyq2Yz7j2PqM8z79axrNlajdozMIeDdSfZFNNGCVGbGFJr0zhTektCAO%2BsOoWfJ8d1QAUTVS8UDjeLcgm9Q%2F%2F8IsAOaw7PhmB6anER4kj13ftyLJ7lnSyJx1hoCHpqVa%2FYUoinYRu35ffMFQLcVN03Ai5ZFwU09H%2FFvSP8JR67xkg1Yns%2FnyQZko9A5aNhCA%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":53,"value":"https://www.ebay.com/itm/354777150278?hash=item529a5db346:g:6woAAOSwVT5kIliA&amdata=enc%3AAQAIAAAAwL2KambFmV0v2f%2Bo48YE0kLMUkDgpye06l2Pbg5Ypr7MUtrxSbdEFRjdwADDkEK2VPX%2B0kwg2jGsObWRAF2AZLRyXbOom%2Bm7Z81AOVoyeo5OS2ToArc7g9oJaTtYaXdBcjvb8Zz%2BcAVUNB336OT%2BZf3BB3lcuzTRnzCnXYYF48G83XxEY7beer3r4E5heW5%2BLl1VK48WXDI4E%2B4nMC5gMhyI8WiPJtklVjoH%2FHtjsCutMkWA5m0C987GvsbIrRZnSA%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":54,"value":"https://www.ebay.com/itm/364190042333?epid=15019024614&hash=item54cb6b08dd:g:GXkAAOSwUj5kGfn2&amdata=enc%3AAQAIAAAA4JKv17A5cE2QI7BTqtpbhom1dpnLUJOirR04JMqCkztHmRURtaMsh6YOvAslQvbRCvZgMB7FY%2BRt7EdhF6habqEz%2FH3wNYwYZv5TT528Tsc%2Fy0ZF4qvyZasX6AMIuE6WpSjjxD9zLa35syIzfirWW6Af%2BV1AqjodZ%2BUL2K5arIP9nRUGtzbKKPhxOVP4DYIyfFnmj3VIWfm720owpEf3hN7b5NlkngUXHl496A6fbtHyIoJFfEyxXneLPgJu%2F0W6uGtTbrEE%2BRneFqmDdo8qGx%2F0b5gsIj4%2FvCFX%2BcxCXoyp%7Ctkp%3ABk9SR767j6OKYg"},{"num":55,"value":"https://www.ebay.com/itm/185662256826?epid=111218208&hash=item2b3a5536ba:g:txsAAOSwhgxj~K6y&amdata=enc%3AAQAIAAAAwGNMCzp7RP3gzxS0lMJ0MO1080FvhiAk2dNXwcZwhYohVt31Gtfcu9zXPTEU8tuMtEdQjRiVlBWKnHBwMgXcaLseNLWJ02m0Qm5leo6pfErTWWzRbjavfFbZFte0wbcQHs2SoDfjdyPh7Fbt8sEltzoP0MicPhvhZiyOe1MFU0FsNqq%2FXZ%2FOKa9%2BHtoxTbXnnU%2Bcgmeh1QlKSeyI6j%2FBLmDPs1ZGTK3W5he5WoQULq8kf9JWuVZDKSE6oBppe%2Frndw%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":56,"value":"https://www.ebay.com/itm/404172810786?epid=240060051&hash=item5e1a93aa22:g:2IQAAOSwN6BkBX5k&amdata=enc%3AAQAIAAAA4E3Vq4D3CP7YwUp45QE%2BwEpnYRe4LczMyKU8OYYO3f9Ze3Gm2hqtaGZcad9nuf%2BC7zCjS%2FG55DAlUrwsFKUIabbfjE4iqbnJXXr7vRRkzVVMPCqJoqUUur%2ButxhcaKzUcBJecsZVLL7TgqMCelZJqEVnkT%2FqWz7xYJPGghlcr3cS8%2BfsHD9RN%2BBlEA4wGc0Uq3bW2trXvmrHyD71W%2Fxoo7zoVephGIHS%2B52aHDvAjNlgE%2BVDwoM%2BS36POSkcoqo1DHsPg%2Bdc7HXHyPgZcpY%2Bg%2FX1c26vjkxpYAhDGS4kiKTh%7Ctkp%3ABk9SR767j6OKYg"},{"num":57,"value":"https://www.ebay.com/itm/175636718714?epid=21056262184&hash=item28e4c3a47a:g:FpMAAOSwDupj23ys&amdata=enc%3AAQAIAAAAwJOKWDLzb4QR6QTWLQ2rFWnNOLqYEVKx8hkq7%2BeCnz9VRv8fs80GQew8iOoekOiEVwwaz67PW4jtyHflu0%2BOa6wrUE3ozndFFTCvPLRiMl4i0GsRhNzlzqeXfKxKiuewxz%2FiUMIXOnHX%2F72Ke5IVsXAVzOFETeYuZulBMA9kI9bTTChKWySyGJwXylp3dXszn8H1MjQ6rG2zR%2Bqmq4u4rQdjbdw%2B9dCSvO%2BnvbZ0l0EoUgmobfu4LUzJv7DqWIpgpw%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":58,"value":"https://www.ebay.com/itm/166093060173?epid=240200776&hash=item26abeaf84d:g:EmQAAOSwiLtkXfnS&amdata=enc%3AAQAIAAAAwDrU5noZec7LSVt0LBRjb6EsIqLZxFouWLD3bXAmRtpsrtJJ0XjKJ4s4oVao54RwFXCmY59HZDaeATS7nyZQ1VPe4HMDgF7MRc%2BAem957352z19GFdPBMcbISKRkEH9TZ2U1njFpnZPkyf4Kmk3q2xTj%2FObZuZ4Kj0JV9JrzRV6bVSQFAdoBsA2VOGPesyl52jDsgoTwg8iUA0W6WuyJdhVFVv792b%2BW2SiNUk15Ha1arSTzLMebVI0warlOOzFepg%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":59,"value":"https://www.ebay.com/itm/265620291838?hash=item3dd83400fe:g:YesAAOSwkfhhnSk5&amdata=enc%3AAQAIAAAA0B7zimYHFc6DQFKkkTAwopA3UtP6x4ItL4wx84Q8sDi%2BE7HVh1Z3zTCt6%2F2klTQ0IoKzDJi68mr78SXkI%2BhWNQ2M5YJ2wi78XUcnjZPjRWG%2F4fkGVg2FBAVKUPAKyYqvHA%2FP5MRMwz0rVqrIkw5M2n8U7uVhnCL2IlEPHW7%2F3An3QwXh2dqOo59rfAyNlLN0B76MiJ937jzm041ruKsU19ggk7AmkHT9vzRgMJHNdcOiWfRemLfAMidMORuHpjL6vY5XS1EbdEUtEv3YDtgIaD8%3D%7Ctkp%3ABFBMvruPo4pi"},{"num":60,"value":"https://www.ebay.com/itm/402891685763?epid=239080666&hash=item5dce373f83:g:Y7sAAOSwH7FgttTS&amdata=enc%3AAQAIAAAA0FqH2aeuPkAmdvvHpNEmlHhKuFVAlx3mVW6UUTfqOGNk28eCuRw1faxM6DRD5WAfupqzRAtnKXAqEYjzsFxgaQoYFEdqjF9XD37LB0KC%2Fxb5IS6NWvCHa7LA6%2FH1yg8lk%2BgcmhvSJzt1wyze%2BUwwZxJCX6N6LRg8oS4EI7Zli%2F%2BMup9d23rCD4FVtMpSI9gQ5qNHMABomETcULS%2F%2F6PD53powD0JDkPhAHMMCiAzctWWLOTyxftoJvMyFTveZGgf6W6KAUAbraeDQcR%2Fz3uc5SE%3D%7Ctkp%3ABFBMvruPo4pi"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"para3_image_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/a[1]/div[1]/img[1]","allXPaths":["/div[1]/div[1]/div[1]/a[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@alt='Apple iPhone 12 - 64GB - Blue (AT&T)']"],"exampleValues":[{"num":0,"value":"https://i.ebayimg.com/thumbs/images/g/yS0AAOSwc1Vjq2a2/s-l300.webp"},{"num":2,"value":"https://i.ebayimg.com/thumbs/images/g/jKkAAOSwHkNjkqJZ/s-l300.webp"},{"num":3,"value":"https://i.ebayimg.com/thumbs/images/g/5nUAAOSw4tpkVZJQ/s-l300.webp"},{"num":4,"value":"https://i.ebayimg.com/thumbs/images/g/zoQAAOSwwqZjWEiw/s-l300.webp"},{"num":5,"value":"https://i.ebayimg.com/thumbs/images/g/5yIAAOSwCMRkSNvZ/s-l300.webp"},{"num":6,"value":"https://i.ebayimg.com/thumbs/images/g/rTMAAOSwGxRkUVOe/s-l300.webp"},{"num":7,"value":"https://i.ebayimg.com/thumbs/images/g/JkYAAOSwwRxkanAH/s-l300.webp"},{"num":8,"value":"https://i.ebayimg.com/thumbs/images/g/4wQAAOSwOh5j6z5H/s-l300.webp"},{"num":9,"value":"https://i.ebayimg.com/thumbs/images/g/lqAAAOSwSd1kJiS8/s-l300.webp"},{"num":10,"value":"https://i.ebayimg.com/thumbs/images/g/FEsAAOSwcURkYNbm/s-l300.webp"},{"num":11,"value":"https://i.ebayimg.com/thumbs/images/g/SPcAAOSwv5NkX4hF/s-l300.webp"},{"num":12,"value":"https://i.ebayimg.com/thumbs/images/g/1qAAAOSwXIFkDBQZ/s-l300.webp"},{"num":13,"value":"https://i.ebayimg.com/thumbs/images/g/ZDgAAOSwLEth8GLy/s-l300.webp"},{"num":14,"value":"https://i.ebayimg.com/thumbs/images/g/zDQAAOSwMpBjNzBD/s-l300.webp"},{"num":15,"value":"https://i.ebayimg.com/thumbs/images/g/ryIAAOSw19phOQhW/s-l300.webp"},{"num":16,"value":"https://i.ebayimg.com/thumbs/images/g/NZEAAOSwcUFkSqcI/s-l300.webp"},{"num":17,"value":"https://i.ebayimg.com/thumbs/images/g/qukAAOSw05JkRwuv/s-l300.webp"},{"num":18,"value":"https://i.ebayimg.com/thumbs/images/g/SfUAAOSwvzZkBA2S/s-l300.webp"},{"num":19,"value":"https://i.ebayimg.com/thumbs/images/g/S5QAAOSwccZkAdGW/s-l300.webp"},{"num":20,"value":"https://i.ebayimg.com/thumbs/images/g/hrEAAOSwxOxjWETt/s-l300.webp"},{"num":21,"value":"https://i.ebayimg.com/thumbs/images/g/FRAAAOSwYTpkbMnb/s-l300.webp"},{"num":22,"value":"https://i.ebayimg.com/thumbs/images/g/ICcAAOSwN~Vg5rB2/s-l300.webp"},{"num":23,"value":"https://i.ebayimg.com/thumbs/images/g/nn0AAOSwKJxkUw91/s-l300.webp"},{"num":24,"value":"https://i.ebayimg.com/thumbs/images/g/jxcAAOSw-5dj1I~O/s-l300.webp"},{"num":25,"value":"https://i.ebayimg.com/thumbs/images/g/Fk4AAOSwg2Vkbp-Y/s-l300.webp"},{"num":26,"value":"https://i.ebayimg.com/thumbs/images/g/I1sAAOSwwMBkP-LE/s-l300.webp"},{"num":27,"value":"https://i.ebayimg.com/thumbs/images/g/P1IAAOSw7uVjUqVK/s-l300.webp"},{"num":28,"value":"https://i.ebayimg.com/thumbs/images/g/JHIAAOSwij1hUn8z/s-l300.webp"},{"num":29,"value":"https://i.ebayimg.com/thumbs/images/g/E2wAAOSwSd1kNXQ1/s-l300.webp"},{"num":30,"value":"https://i.ebayimg.com/thumbs/images/g/ukgAAOSwSTZjYqeH/s-l300.webp"},{"num":31,"value":"https://i.ebayimg.com/thumbs/images/g/4ZkAAOSwdOdifmmg/s-l300.webp"},{"num":32,"value":"https://i.ebayimg.com/thumbs/images/g/iJYAAOSwtOFkaqFa/s-l300.webp"},{"num":33,"value":"https://i.ebayimg.com/thumbs/images/g/Ll8AAOSwRaJjw2kO/s-l300.webp"},{"num":34,"value":"https://i.ebayimg.com/thumbs/images/g/HuoAAOSw~2JkbSM8/s-l300.webp"},{"num":35,"value":"https://i.ebayimg.com/thumbs/images/g/IIwAAOSwmTNjxuMX/s-l300.webp"},{"num":36,"value":"https://i.ebayimg.com/thumbs/images/g/rwgAAOSw3b5kWGuE/s-l300.webp"},{"num":37,"value":"https://i.ebayimg.com/thumbs/images/g/oNIAAOSw9PZj~JpM/s-l300.webp"},{"num":38,"value":"https://i.ebayimg.com/thumbs/images/g/S8wAAOSw6Ztkbs9Z/s-l300.webp"},{"num":39,"value":"https://i.ebayimg.com/thumbs/images/g/ZM8AAOSwtBlkBYcD/s-l300.webp"},{"num":40,"value":"https://i.ebayimg.com/thumbs/images/g/6NMAAOSwP3xjNxwy/s-l300.webp"},{"num":41,"value":"https://i.ebayimg.com/thumbs/images/g/S64AAOSwVgpiqlye/s-l300.webp"},{"num":42,"value":"https://i.ebayimg.com/thumbs/images/g/HE8AAOSwD7pka-ye/s-l300.webp"},{"num":43,"value":"https://i.ebayimg.com/thumbs/images/g/lhMAAOSwgFFj0von/s-l300.webp"},{"num":44,"value":"https://i.ebayimg.com/thumbs/images/g/C5sAAOSweQ5kWId5/s-l300.webp"},{"num":45,"value":"https://i.ebayimg.com/thumbs/images/g/dDIAAOSwHcJkbpJo/s-l300.webp"},{"num":46,"value":"https://i.ebayimg.com/thumbs/images/g/cxYAAOSwuk9jgIHV/s-l300.webp"},{"num":47,"value":"https://i.ebayimg.com/thumbs/images/g/keMAAOSwZXxkWJz9/s-l300.webp"},{"num":48,"value":"https://i.ebayimg.com/thumbs/images/g/aJcAAOSwW0tkVH8D/s-l300.webp"},{"num":49,"value":"https://i.ebayimg.com/thumbs/images/g/egoAAOSwEshkBX29/s-l300.webp"},{"num":50,"value":"https://i.ebayimg.com/thumbs/images/g/pSUAAOSwAjpj39Uh/s-l300.webp"},{"num":51,"value":"https://i.ebayimg.com/thumbs/images/g/aCEAAOSw5S5kBYOD/s-l300.webp"},{"num":52,"value":"https://i.ebayimg.com/thumbs/images/g/JUcAAOSwOPpkNcYf/s-l300.webp"},{"num":53,"value":"https://i.ebayimg.com/thumbs/images/g/6woAAOSwVT5kIliA/s-l300.webp"},{"num":54,"value":"https://i.ebayimg.com/thumbs/images/g/GXkAAOSwUj5kGfn2/s-l300.webp"},{"num":55,"value":"https://i.ebayimg.com/thumbs/images/g/txsAAOSwhgxj~K6y/s-l300.webp"},{"num":56,"value":"https://i.ebayimg.com/thumbs/images/g/2IQAAOSwN6BkBX5k/s-l300.webp"},{"num":57,"value":"https://i.ebayimg.com/thumbs/images/g/FpMAAOSwDupj23ys/s-l300.webp"},{"num":58,"value":"https://i.ebayimg.com/thumbs/images/g/EmQAAOSwiLtkXfnS/s-l300.webp"},{"num":59,"value":"https://i.ebayimg.com/thumbs/images/g/YesAAOSwkfhhnSk5/s-l300.webp"},{"num":60,"value":"https://i.ebayimg.com/thumbs/images/g/Y7sAAOSwH7FgttTS/s-l300.webp"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para4_link_text","desc":"","relativeXPath":"/div[1]/div[1]/span[1]/a[1]","allXPaths":["/div[1]/div[1]/span[1]/a[1]","//a[contains(., '')]","//A[@class='s-item__watchheart-click']"],"exampleValues":[{"num":0,"value":""},{"num":4,"value":""},{"num":5,"value":""},{"num":6,"value":""},{"num":7,"value":""},{"num":8,"value":""},{"num":9,"value":""},{"num":11,"value":""},{"num":14,"value":""},{"num":17,"value":""},{"num":21,"value":""},{"num":23,"value":""},{"num":24,"value":""},{"num":25,"value":""},{"num":26,"value":""},{"num":28,"value":""},{"num":32,"value":""},{"num":33,"value":""},{"num":34,"value":""},{"num":35,"value":""},{"num":38,"value":""},{"num":40,"value":""},{"num":41,"value":""},{"num":42,"value":""},{"num":43,"value":""},{"num":44,"value":""},{"num":45,"value":""},{"num":52,"value":""},{"num":57,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para5_link_address","desc":"","relativeXPath":"/div[1]/div[1]/span[1]/a[1]","allXPaths":["/div[1]/div[1]/span[1]/a[1]","//a[contains(., '')]","//A[@class='s-item__watchheart-click']"],"exampleValues":[{"num":0,"value":"https://www.ebay.com/myb/WatchListAdd?item=204347640092&pt=null&srt=0100080000005099935eea570d06429b655d8c91da9ea4db4035a6167fdf6b7b1af51ddd35ae0b88aa90a24a76c0cdd755b02d6d156aadc3baa53440abb15a39018f0461d3d2ca754448d10f4ff5c5cc68ca07ed536011&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":4,"value":"https://www.ebay.com/myb/WatchListAdd?item=354499126227&pt=null&srt=0100080000005018955b8d48185355e07bcf53aa7ede448674926e79a691fb2f196f1df52e4e194bfe78c7420bed2ac7eeaefb0493a212759d3b95478ee319732d7b915484026ea881b037d48cf12efcae250ed2e61bd6&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":5,"value":"https://www.ebay.com/myb/WatchListAdd?item=165950326528&pt=null&srt=01000800000050afa706863e29d4fa372e69621c267042b51e3688d0c5b88262a67a2ae9c21b4d211476e1debf844b351784d930a6d071b216684c6637df14132115aedaa132496b58804f19238b86811fd4ee09c4846d&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":6,"value":"https://www.ebay.com/myb/WatchListAdd?item=334883786743&pt=null&srt=01000800000050c478f478d8d18c594b72a5939afdf89574c6c6c7ee9363f35fe540f73d86598b2110e17c58a794782e749eaf88422e717468e57600d800bc65af7931a5e5643201e110535da02627f0047f3825584d76&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":7,"value":"https://www.ebay.com/myb/WatchListAdd?item=125946822312&pt=null&srt=01000800000050aa88649e82ead3ac235cb44336e37bab452ab5b4f3dcf86b9c1812b0f2721cd5580d244ce674b8a489e6bd9f5ebbcaa978a03225a98b23857114a797eeebacef901343d711a490afe5de1469e9c60a21&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":8,"value":"https://www.ebay.com/myb/WatchListAdd?item=374711273285&pt=null&srt=01000800000050961e4230510493d034b7e5302f1fe62b271dd67cc271919d75ce034852985e00afa9d6bdd32886620de9821c1262050ee0f55755656e68ec808fe0a119360cd65703f8300a18c43165c03efe89ab51d7&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":9,"value":"https://www.ebay.com/myb/WatchListAdd?item=155478954794&pt=null&srt=010008000000509be8a43255f042eff8f91d461a8665d429a32a3d4632c55b2a3e2f7dbcd7f9ed4d6fdcc9896c895d759642eee6253fc4cbd2fdaa9370232d29deb18b5d996362cfe7bb29d4203a303ecaca8f52d83571&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":11,"value":"https://www.ebay.com/myb/WatchListAdd?item=354799969746&pt=null&srt=01000800000050185d78b601dd2eb301011cc9d534a322ff9580be1e56e141cd978ff9d2ffa81cb27ce194307eeb14bef68c735becfd83e745af866fb52cdb8e701a9994459833bd2126e91d14329aa4a93edd853e461b&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":14,"value":"https://www.ebay.com/myb/WatchListAdd?item=275481671524&pt=null&srt=010008000000503fc62022689a162351b8fd18c1780523e3011f98b1d6761b69aceed2c4283024be7ee36cb3625b870b77480466f14e803e8e8f6e81afd3570010d1bba44ee8108d610898d685ec722bb55f87ba6f8605&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":17,"value":"https://www.ebay.com/myb/WatchListAdd?item=275816818931&pt=null&srt=010008000000502f395ada6b7f2180e2c9aae71af9152a00d36016684948e050d114e7da9577fa9e7a0935569e5d462bfcb3347daa4d4d46486b63f539c2ff2e0bd7f43258b7ce6b9d84119091f8d8493ed25e45ceb7e7&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":21,"value":"https://www.ebay.com/myb/WatchListAdd?item=404303235453&pt=null&srt=01000800000050cd646d6da45cf0e3e8d676a33b7dcb490c352abc80283664a111e6ff630bee1ec5b71656e278cd97d0f8753cac4b8e4f9cb170d4c8b0276a0f186a458f7e13a5ef26462cf7edb0fdc698f0ee0480c7c3&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":23,"value":"https://www.ebay.com/myb/WatchListAdd?item=115809329987&pt=null&srt=0100080000005068ae937ed8f73bb6ea31dd4af96f38829f04f25432198b61e7b91a74399113acc6d98cfd347ffa381f378a11d41232b153b65c508df0268c4b1d8e166d2f72922469ae9e838afbfa63d343740733ca08&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":24,"value":"https://www.ebay.com/myb/WatchListAdd?item=155381097344&pt=null&srt=01000800000050f80f34ea846e69c146d5ff2e889dd30062446cf86387679f3663b6c9fd6e651c1d45078a71d7d967f7504e942090e1c5b548902ef1c6446f3bf7193423bd23f4d75a1c515c53ec0223cf815de2aca345&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":25,"value":"https://www.ebay.com/myb/WatchListAdd?item=354806773691&pt=null&srt=0100080000005055a89deaa08e8fa4a6ea0ff5dc31f7e4ab921e2db3a94048d8540ffb6af8246ebf06324b1fc103113222d3da2863193b9d3293d8e9de88a58dea9718f7bc0fe6dc31dbd591b037f9274033233dc21b7e&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":26,"value":"https://www.ebay.com/myb/WatchListAdd?item=266226088419&pt=null&srt=010008000000509150921c76ec77d0cf3c5a8e6630b9aed2c636d24efe7b5b84604511ded5faea52a167640aca1be279196c5ae4c72c92fd0938cf37d70a89a6c3ef81681ee17bacdb5f21c5f432388fe7c81ae785c111&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":28,"value":"https://www.ebay.com/myb/WatchListAdd?item=266065363299&pt=null&srt=010008000000504979765d912674b1c87b01ad37a720318d3f73085f99a9a7323361589a404e9f7ca6dd50bcc0f99696e7174862efd1f3588d1d9030291b7c2870ca81a5dae215c60b8bc6a67a6d9e4f6b58007b2c0cf8&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":32,"value":"https://www.ebay.com/myb/WatchListAdd?item=145095967799&pt=null&srt=01000800000050e49d0df39179085776ed181ef3100fbe232aba306506b811433dd93f4f3523c97e989b05a9d2cc881b3cc25fce122b2dac7fc476c82570880fd74d68e620aec05c6a6db43e99be3273774d7afb25cf5d&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":33,"value":"https://www.ebay.com/myb/WatchListAdd?item=195558414119&pt=null&srt=010008000000504f59d2969039e8285a1c44330a0d8f83033dbae958df69a1a7008d3866dfb5255910eea6084dba18b1000118ae2d3ecaa0f6fb1a5cf31cec828b33c045fac78793beb369caca297808b051c95cd37d91&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":34,"value":"https://www.ebay.com/myb/WatchListAdd?item=295672429475&pt=null&srt=0100080000005094b8da1e52928e2cb1a1bc0844c65fd8ece6169b547dbbd94e0ccf9726945a6589b714f60ee9fa845748c4d3bd2bcd07835df2f859640fd211bc8ed2f595d512f04a41cc739c41e6df11dbda459beff1&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":35,"value":"https://www.ebay.com/myb/WatchListAdd?item=115791017894&pt=null&srt=0100080000005008b82315127b6e0511f63104c03d4e7efd9b29ca2b96462c60555d1e71ccf7ec52924a97939f74bc6b6341b0d4a9a86469c34130823be36da7bdbaaccb12b164682234f9b38c82b324cf47be144e098c&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":38,"value":"https://www.ebay.com/myb/WatchListAdd?item=374717197868&pt=null&srt=01000800000050fc469c13bf21a94f9e403c590bc7ed089fc58008a14894354af16446adedfaeac8efdbe963e7254473d468de62fda4db48fa0f682c1f687c7c3ce63fb848133038c40a769bacb6bdc34d9e47f5b0e705&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":40,"value":"https://www.ebay.com/myb/WatchListAdd?item=265911650646&pt=null&srt=010008000000508f711634bd92b87b1d27de654d81600c772c253382dccb53db80475e80121dbf77b3fb78e14b497a99394f13e295c1753d972eb4f30c230d78bc906d79c13caa0f6b2c259ae9582277c692eab61d9f03&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":41,"value":"https://www.ebay.com/myb/WatchListAdd?item=225032084926&pt=null&srt=01000800000050f7e1bf80b6b333b0e2f233b3573cceb5a241fdc56915ed93f03c3a4afd6d72c6a47d80421739b5421b406bc45ee300e5b4f0b8bb226da946b49d1c72bf045334d52309c4ed5d9e7e0655a7f7c8378f2d&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":42,"value":"https://www.ebay.com/myb/WatchListAdd?item=115813971678&pt=null&srt=010008000000507e3a7c7f142e9ee38c2c21acdfd19098a5ef5ef147442d300df8173b53c3301072545d60876dea465e12a0d293faa223096707ad7d3de385096a3806fc8b1f01ed29bbace344d6a6a07350de45e30d46&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":43,"value":"https://www.ebay.com/myb/WatchListAdd?item=394434823940&pt=null&srt=01000800000050bb75ad5af7594cfa5c7ac4550c25df2cbe4c10aba39a50e015c45118c26fb18a16887b512c4fcdeca41d3b625facd24d26c201f85ce5267b4d5deff3a32ef53991439bbee13f3ae1f8dfbda4b6bc109b&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":44,"value":"https://www.ebay.com/myb/WatchListAdd?item=385598884410&pt=null&srt=01000800000050677822f3576bf307399dd8d0906af838d1ea0dcc6c36678e04a302ac568122a9c2e899bfd42c4cd36f1e0494f03b718b70a0389e641d40305b09f61d4d75768db29b4c3c8a1b0fe75a50513472782e50&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":45,"value":"https://www.ebay.com/myb/WatchListAdd?item=204347780252&pt=null&srt=010008000000501e9d9ec459e7b4cab644b49791fee0d3e8ce41ec0f2b8cb8c0c96d968ff8735ca97f37ab419dfbce6fa66016dc37e40b2868055dccdf9a5e55529df5c59f3c6e18ae4da11b5c53f9e16ac237e66385f1&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":52,"value":"https://www.ebay.com/myb/WatchListAdd?item=234972583475&pt=null&srt=0100080000005056fd0ac47e6224eef968fdd86e9ebdcdc6d745735af3031f5f0787a18fb22a7e925c9f763b6e5bceffa7ea25085abbfb5ba469c60082c6ff81842faa07be3855c8690eedaf352fb6639096b51c7ba63e&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":57,"value":"https://www.ebay.com/myb/WatchListAdd?item=175636718714&pt=null&srt=010008000000503273bd718fa25edcbe3c79b48ab23a1b968e840ac8d405edaf5d3affee35643a667457190084ddc7d31093fc6beeb55c76bfde1fbc7847d4f89af51d480998d138fc2ebac2e614870aac57b0c33f2a4e&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"},{"num":60,"value":"https://www.ebay.com/myb/WatchListAdd?item=402891685763&pt=null&srt=010008000000507ab313f40ef1e7f468f26c4b2c5e99acd7d5dbc691ed73578d41b09e8614fdf84d77ed46652b50486a3a4dfe2b188455a559410627db4bcaa5e00719961de8fdc1494585f2dcdb7deacaa0d94dd48013&ru=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DiPhone%26_sacat%3D0%26_pgn%3D2"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para6_link_text","desc":"","relativeXPath":"/div[1]/div[2]/a[1]","allXPaths":["/div[1]/div[2]/a[1]","//a[contains(., 'New Listin')]","//A[@class='s-item__link']"],"exampleValues":[{"num":0,"value":"New ListingApple iPhone 12 - 64GB - Blue (AT&T)Opens in a new window or tab"},{"num":2,"value":"Apple iPhone SE 1st Gen. - 16/32/64/128GB - ALL COLORS Unlocked/AT&T/T-MobileOpens in a new window or tab"},{"num":3,"value":"Apple iPhone 8 Plus - 64/128/256GB - ALL COLORS Unlocked/T-Mobile A1864Opens in a new window or tab"},{"num":4,"value":"Apple iPhone XS - 64GB - Space Gray (Unlocked) A1920 (CDMA + GSM)Opens in a new window or tab"},{"num":5,"value":"📱 IOS6 Apple iPhone 5 16GB Unlocked Black white gold blue Perfect appearance 📱Opens in a new window or tab"},{"num":6,"value":"Apple iPhone 6 Plus - 64GB - Gold (Unlocked) A1524 (CDMA + GSM)Opens in a new window or tab"},{"num":7,"value":"iPhone 12 Pro 128gb Unlocked Used ExcellentOpens in a new window or tab"},{"num":8,"value":"Apple iPhone 7 Plus 256GB Pink Unlocked A1661 CDMA GSM Working SmartphoneOpens in a new window or tab"},{"num":9,"value":"Apple iPhone 2G Generation - 8GB - SilverOpens in a new window or tab"},{"num":10,"value":"Used Original Unlocked Apple iPhone SE 4G LTE 4.0' 2GB RAM 16/64GB ROM Dual-coreOpens in a new window or tab"},{"num":11,"value":"Apple iPhone 6s Plus - 64GB - Space Gray (SaskTel) A1687 (CDMA + GSM) (CA)Opens in a new window or tab"},{"num":12,"value":"Apple iPhone XS ,XS Max Unlocked Various Colors 64GB 256GB 512GB Smartphone goodOpens in a new window or tab"},{"num":13,"value":"Full Cover TEMPERED Glass For iPhone 11 12 13 PRO XS MAX XR 7 8 Screen ProtectorOpens in a new window or tab"},{"num":14,"value":"Apple iPhone SE 2nd Gen. - 64GB - Black (Unlocked) A2275 (CDMA + GSM)Opens in a new window or tab"},{"num":15,"value":"Apple iPhone XR 64GB - All Colors - Fully UnlockedOpens in a new window or tab"},{"num":16,"value":"Apple iPhone 13 mini - (Unlocked) - 128GB - 256GB - 512GB - ExcellentOpens in a new window or tab"},{"num":17,"value":"Apple iPhone 11 Pro Max 256GB Space Gray Unlocked Excellent ConditionOpens in a new window or tab"},{"num":18,"value":"Apple IPhone 5S 16GB 32GB 64GB Space Gray Silver Gold UNlocked SIM Free SealedOpens in a new window or tab"},{"num":19,"value":"Apple iPhone X Unlocked OLED Smartphone 5,8\", 64GB, 256GB, 512GB, SYDNEY STOCKOpens in a new window or tab"},{"num":20,"value":"Apple iPhone SE 2020 (2nd Gen) Smartphone - Broken for Parts / Repairs!Opens in a new window or tab"},{"num":21,"value":"New ListingApple iPhone 11 Pro - 256GB - Silver (Unlocked) ~READ DESCRIPTION~Opens in a new window or tab"},{"num":22,"value":"Apple iPhone 11 Pro A2215 256GB Factory Unlocked Single sim Very Good conditionOpens in a new window or tab"},{"num":23,"value":"Apple iPhone 11 Pro - 64GB - Space Grey (Unlocked) A2215 (CDMA + GSM)Opens in a new window or tab"},{"num":24,"value":"Apple iPhone 3GS - 8GB - Black (AT&T) A1303 (GSM) Fast Ship Excellent UsedOpens in a new window or tab"},{"num":25,"value":"New ListingApple iPhone 8 64GB Unlocked A1905 GSM - Space GrayOpens in a new window or tab"},{"num":26,"value":"AT&T FACTORY UNLOCK SERVICE Factory ATT Unlock Service only Clean iPhoneOpens in a new window or tab"},{"num":27,"value":"Apple iPhone 6s Unlocked Various Colors 16GB 32GB 64GB 128GB Smartphone UsedOpens in a new window or tab"},{"num":28,"value":"🔥 Apple iPhone 6s 128GB - Space Gray (Unlocked) A1688/A1633 smartphone sealedOpens in a new window or tab"},{"num":29,"value":"iPhone 7 32GB 128GB Black/Silver/Gold/Red Unlocked Verizon at&t Cricket SmartOpens in a new window or tab"},{"num":30,"value":"Apple iPhone 11 - 64GB All Colors - Unlocked - A2111 (CDMA + GSM)Opens in a new window or tab"},{"num":31,"value":"Apple iPhone 11 128GB Factory Unlocked 4G LTE Smartphone - GoodOpens in a new window or tab"},{"num":32,"value":"NEW APPLE IPHONE SE 2ND GEN 64GB WHITE (CRICKET WIRELESS) A2275 (CDMA + GSM)Opens in a new window or tab"},{"num":33,"value":"Apple iPhone 5 GSM UNLOCKED - 16GB Good Condition BlackOpens in a new window or tab"},{"num":34,"value":"Apple iPhone XR 64GB Black Unlocked Good ConditionOpens in a new window or tab"},{"num":35,"value":"Apple iPhone SE 2nd 64GB XfinityOpens in a new window or tab"},{"num":36,"value":"📱 Apple iPhone 4S 8/16/32GB - Unlocked Black white Grade A+ Condition 📱 IOS6Opens in a new window or tab"},{"num":37,"value":"Case For iPhone 14 13 12 11 7 8 X XR Bumper SHOCKPROOf CoverOpens in a new window or tab"},{"num":38,"value":"New ListingApple iPhone 6s Plus - Rose Gold (Sprint) A1687Opens in a new window or tab"},{"num":39,"value":"Apple iPhone 6 Plus - 64GB - ALL COLORS (Unlocked) A1522 (CDMA + GSM)Opens in a new window or tab"},{"num":40,"value":"Apple iPhone SE 2020 64GB Black AT&T Only Never ActivatedOpens in a new window or tab"},{"num":41,"value":"Apple iPhone XS Max - 64 GB - Space Grey (Unlocked) A2101 (GSM) (AU Stock)Opens in a new window or tab"},{"num":42,"value":"New ListingApple iPhone 6s - 128GB - Silver (Unlocked) A1549 (CDMA + GSM)Opens in a new window or tab"},{"num":43,"value":"Apple A1532 iPhone 5c 16GB (Verizon) White Smartphone (A4170)Opens in a new window or tab"},{"num":44,"value":"iOS 2.0 Apple iPhone 3G 2nd Generation - 16GB - White (Unlocked) A1241 (GSM)Opens in a new window or tab"},{"num":45,"value":"New ListingApple iPhone 14 Plus Midnight 128GB SEALEDOpens in a new window or tab"},{"num":46,"value":"New&Sealed Apple iPhone 4-8GB 16GB 32GB-Black White UNlocked (AT&T) A1332 (GSM)Opens in a new window or tab"},{"num":47,"value":"📱 Apple iPhone 4 8/16/32GB - Unlocked Used Full function mobile phone IOS7 📱Opens in a new window or tab"},{"num":48,"value":"📱 Apple iPhone 5s 16/32/64GB - Unlocked Black silver gold Grade A Condition 📱Opens in a new window or tab"},{"num":49,"value":"Apple iPhone 4S 32GB IOS 6.1.3 Unlocked White Black Smart PhoneOpens in a new window or tab"},{"num":50,"value":"Case For iPhone 14 Pro Max 14 Pro 14 Plus 14 Shockproof Silicone CoverOpens in a new window or tab"},{"num":51,"value":"New&Sealed Apple iPhone 4 32GB A1332 Unlocked White/Black Smart PhoneOpens in a new window or tab"},{"num":52,"value":"Apple iPhone 11 64GB Smartphone Brand New Metro by T-MobileOpens in a new window or tab"},{"num":53,"value":"Screen Protector for Iphone 11 12 13 14 Pro Max,xr,7 8 14 Plus Tempered GlassOpens in a new window or tab"},{"num":54,"value":"Apple iPhone 6S 16GB 32GB Various Colours Unlocked Smartphone Grade A Very GoodOpens in a new window or tab"},{"num":55,"value":"Original Unlocked Apple iPhone 4S -8/16/32/64GB Black White iOS 9 3G SmartphoneOpens in a new window or tab"},{"num":56,"value":"Apple iPhone 4S 64GB IOS 9.3.6 Unlocked White Black Smart PhoneOpens in a new window or tab"},{"num":57,"value":"New Apple iPhone 14 Pro Max 128GB A2896 Dual Nano-SIM Unlocked - Deep PurpleOpens in a new window or tab"},{"num":58,"value":"Original Apple iPhone 4S 8/16/32GB - Unlocked Black white Grade A Condition IOS6Opens in a new window or tab"},{"num":59,"value":"Apple iPhone 11 64GB Unlocked Verizon ATT T-Mobile GSM CDMA Smartphone A2111Opens in a new window or tab"},{"num":60,"value":"Apple iPhone 8 Plus - 64GB - Space Gray (Unlocked) A1897 (GSM) (VERY GOOD)Opens in a new window or tab"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para7_link_address","desc":"","relativeXPath":"/div[1]/div[2]/a[1]","allXPaths":["/div[1]/div[2]/a[1]","//a[contains(., 'New Listin')]","//A[@class='s-item__link']"],"exampleValues":[{"num":0,"value":"https://www.ebay.com/itm/204347640092?epid=18041714849&hash=item2f9411891c:g:yS0AAOSwc1Vjq2a2&amdata=enc%3AAQAIAAAA0Grlm4pb%2BLpo%2FTp7ipxK6jITVW9vHRTIRtMBSSUufzWHPN4YJUxndPOxUxJsvvtRTN3A1SCvPtafL6H9ZhrBsS7FYbcH9uCYeAw1ugNxdTkCT5KJ2EhP8JqAVphIOqcw2FG6jp%2F%2BTf4eOl9MS%2F4XDrZ8ft1RmUtXFnuAwm%2FvyjOwy5OLLpGKwR6erX8zW3QoJ0DQAS%2FJ4r%2F4jeibkT69QiDO3d32Rov0pdIDO72andbE9tYTzdxuxWk3RgasoPnJWXBlhELrH5ggaXWp9LmilI0%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":2,"value":"https://www.ebay.com/itm/125654726090?epid=235058061&hash=item1d419af5ca:g:jKkAAOSwHkNjkqJZ&amdata=enc%3AAQAIAAAA0KVOKlfLx7XsyUBFyBTCyW8R6qQV8F9O8BnuAJ3cF1XEcbGjHgbenk3tf%2BVhgq1I3bCO8dhI8JigiAobZHmzbei7FM6RViOniWADo4YtPfKV8mE2EQKeBhxX5d5lgDtwCeoA7F6ZZjPoZL%2BCQfrSIKM2CtW9%2Fywc%2B115p%2BSfDALw0bZacX%2FoMyntKaw%2F2Zc%2FfIhR%2FTx2PDwQ8DMdy590K2d7pB8G0e5onxABchqDR3o6QnbgOrW1KViWLFsngiobkXsB7Y615a1Jss0Xcxv%2BSwA%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":3,"value":"https://www.ebay.com/itm/125921528476?epid=16044554351&hash=item1d51820a9c:g:5nUAAOSw4tpkVZJQ&amdata=enc%3AAQAIAAAA0GycVNjpztmJKb%2BBaTdtZNteE%2Fy4AVXrXwopCF8isII7418Ruoq92tlxCH0hqgZGEJAsoIrbvLsXQKgEp8eXVk8aWF07IQyTxbTF1AjWEZ%2BMCb1GMwRbh2Oz9DjNlE9cmSHOKFoyCRtI3YFlz5xXsCm4h6YFE96fWprUGwTIY0FXg2Uol3uGPS6gl7czY3wxqv2i5wOi6TBSm7zSUKfzvul0YuoRAyYA4Ytu4g8UWiUOYdCw3jjZbCH0AJ%2FO9bDFhrhHgCmjkUR4XDiXZe0LcKQ%3D%7Ctkp%3ABFBMuLuPo4pi"},{"num":4,"value":"https://www.ebay.com/itm/354499126227?epid=25023700375&hash=item5289cb63d3:g:zoQAAOSwwqZjWEiw&amdata=enc%3AAQAIAAAA4LhURfPaJT7fzaYHDEMQpQkN1zCMFKdPeJiMN%2B5c1DXPObw9Y5iv6QncB7oijhrwozVDMXaesCt6h1C%2BsmBNkI5jPjcdph6xpwbBONoorzBF7bibHfH0tPOk2NijlyBdxbgXWJQIPYdOkdpN90avRGazHKJmPyt1ehV9pVjrvv3QMV9sz6lak7ZjmURIKtqYG%2B9B%2FeK48LicHv8ElL2wLwkUyX9xryxCrrx92hYMB13ww2RbD4mIaQKKHKWshFxg74CsdGT6kxflk1OyVvRPYXPg6jPmolOTAgr108mCYuC6%7Ctkp%3ABFBMuLuPo4pi"},{"num":5,"value":"https://www.ebay.com/itm/165950326528?epid=117394868&hash=item26a3690700:g:5yIAAOSwCMRkSNvZ&amdata=enc%3AAQAIAAAAwAcNLrIyYwFGbrXgvcdpNX1esAO0%2FmHJ3TeYtULeeih%2BVMfcz4Z50%2BtOQx%2FsYDGZN83yFQXfKDkRG601W2Mok3RbJyt3s1Qli44UgrzmKbG6zL7HHhp16Nzcv92KY8fRkgnYJd2Tj%2FtSlPHeroWM68tAWSCgeRygvlOK2%2Boe%2Fn8iL%2Fwn84QoQJdLlUHwMXwQfgD3k%2Fr%2BT18f%2FvbSM4iAU4WqvKH9pMsL11yAMoYfnx%2BEtrfiAj2IfD1PcHVFpT%2Bwrw%3D%3D%7Ctkp%3ABk9SR7i7j6OKYg"},{"num":6,"value":"https://www.ebay.com/itm/334883786743?epid=203706854&hash=item4df8a10ff7:g:rTMAAOSwGxRkUVOe&amdata=enc%3AAQAIAAAAsDpMKq1e%2BZ96Kryn0RCHC7T5kNnut2gKo8sZPTtwg7TfFn56gqcMnd8yJsDyIRFcXHGbYYoQKUtova18VTHs%2F6W3gXvg%2BtI%2FlUVUb7b7a9vyrqAW0m6M8Rab6gzOqHcsqM4oWprBPF2vkrc8gtddJDkxZ7P3fyfcjsmAkp2jebdBnWPayVArgL9kDMxNPgXBtS%2FaTFFYqzfmxyXs4G2uhVqx8q0hAJ6bFKqi%2BCwhY7Ax%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":7,"value":"https://www.ebay.com/itm/125946822312?epid=4050016431&hash=item1d5303fea8:g:JkYAAOSwwRxkanAH&amdata=enc%3AAQAIAAAA4A0z74dPTHUYMHyCDXwCtF%2F0kW5urkM3S%2FpvhEVNy4rdLiflFfegOW4EVinTQy0ABMpK6gZWc6HURlVhFzwIAWNsVCwgMXIkq9QfVGljEI05qviEOCwxKvmO9OuTdJuENJygXMkgiCBQcYW2nXN8hzkZQGEkhZPgsx6YUqmNca8rDOa86B2JuqchQRvPTFS42S3U3gCVwm16kNiW%2FsWb4CN94UoJfrEL36CQSTwZ5GA%2F6K2LuPIa8gwbj9LwX9mLAZBVkllba1PemJUlAogbvKusVmg1LlFNbZfXSiss3G%2BE%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":8,"value":"https://www.ebay.com/itm/374711273285?epid=225076071&hash=item573e884745:g:4wQAAOSwOh5j6z5H&amdata=enc%3AAQAIAAAAwEcb684K5uCldH4Ib8V9IDNrSMhRsMO0tp%2F0vqNcXv77jC5vMztxFzEnA%2Bih52li4BAMeLQe8OX92IV3nv3cRzo1U4IsJT6B%2BJbdmkDxDw4BBcCMY9oauXFMJwyeTcvKCZ6ywxenQBE5a9FUorSV%2Bl1Q50xpxjnU1fd4cd2sfZym1nMqca3p7EEEQTudI0kcd6k5xxEnMX3oeKzWqk6MzS4SZdD44boXaIshJkJ0FQjxbfW%2F%2BW3iQOac8uB48lRl%2FA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":9,"value":"https://www.ebay.com/itm/155478954794?hash=item243344932a:g:lqAAAOSwSd1kJiS8&amdata=enc%3AAQAIAAAAwILIejpgLZMURxpGzNBghrR643%2FrbWk2pdjH9oIXX3MpJXgqJkiQ1nTbhkQ2alCnR9Bhx4ittONzSPXSnBQ2tOEj8d5RT8Uz8lcG76NxcA4YB18z%2BwKIrde67lI4ofTiTEsZdNKYBL9ad3NNru%2B8L7S2isUCmCvRfq9GmUAF%2BiDzIuxh7AeWJSIx6MY0qZJDAp66rrLNV8oqwEjp%2FqqkpCAETvbgLiL4T7fITDmefLL5gI09YtcPseF5uNznmYzUMg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":10,"value":"https://www.ebay.com/itm/145082432845?hash=item21c7963d4d:g:FEsAAOSwcURkYNbm&amdata=enc%3AAQAIAAAA4GaTsQp1ikZTKddFPmYlX2bbLOUFwsxZTv%2Bk48aXmacGB7kuLpTuF%2FCttnsPEWt0FT3TOJ4G%2BOl9e%2B4iFlx68iv7GDObBJgJuJ%2BXh5jGY621s7TxlF20J5%2BNwppAWhmDSGWuJoO0hvxCDiFTRwr%2BBHRzBdkrW%2BOXvaGsGsvYZOdPeP2A%2B9D%2BDVyFXp3osF0BVVdx0blvQ%2F78SUAFQJKWznaXzyyGBgGkfCaqmgEezeNq1%2FGcFQauufyjjRJ8v4ZdlWMKuh5rxIBYA9VYKbDgRVfhgsUdWCNaVTuKVVRqdI19%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":11,"value":"https://www.ebay.com/itm/354799969746?epid=228231541&hash=item529bb9e5d2:g:SPcAAOSwv5NkX4hF&amdata=enc%3AAQAIAAAA4PTKlXFmZj3DaH5VQGPjqN0h1hOVqEdZ0Ka8EiqLmZ%2BjrycvEsRcQc7teFyuWq6djY3QfVgWvSS%2FmZ9Lvug2d1m1%2FGWFTfkMBzY7ZRe4JPsZ5ly26nm2SFqATnebsy2p1ktQqhIsSt6HlO8uadi4gRwI6pWOBmLDyXnD05xyn5%2F%2BoydGtx%2FNTs4wiXcuSvMKz3ZCMVqF%2FDR6B0AV6ygyTgYX5QMmRT%2BkjB3eCyrxG7BGz9j7umVh9V%2BEP6PVQZWmmz5Wl4QjAPKHb%2BXov43oFXh0pIP%2F3bp80klbwK3c91gZ%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":12,"value":"https://www.ebay.com/itm/144982418317?epid=6023706166&hash=item21c1a0238d:g:1qAAAOSwXIFkDBQZ&amdata=enc%3AAQAIAAAAwH4NXfSyalOuMGZhaYME8Mlyj0T1eO%2FhimC3vMPA8kQWyzaY0gwjsvAM7KQWOAfR0a9oSkq6i68G99dySqknKqD9ty%2Bek6nhwWqeOHdCJs377BFIpXdZ0PCExj86wplBN0PzoQvElKjRZ5tUIkAZnORfjnOOfpWdfT5nVbWEm%2BxK6Dtqo6vjsaT5Ad%2FAJmGRa73%2Bbzf6PR6Sm7E0dUnqnAtm7g1IAAJIOC%2FXyLV%2FGVKIh4fWS%2FR%2Bk1jscwct3HCuww%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":13,"value":"https://www.ebay.com/itm/185270042866?hash=item2b22f480f2:g:ZDgAAOSwLEth8GLy&amdata=enc%3AAQAIAAAAwNxut9FM4YWQktgg8Qt2IHJeXaDLEl0t49xK8TVZGbgT6GL8oLzTjD4ucy4yfQQVmf1Z5ZWhBUf24EfnOBxKP6SfgohiCOkO94qytubmyW%2BPpYa2Jd0eJk9w9OLAvTG0UVOorbMRTYonA0HfBYpKkQDPKXkSBQGosTcU0cgSZb5WfI8WEKu6ZJSy48PGp3ZNxDvrYq7125hnLArg0suRn4EQzQ%2FTeQLkb%2FalwM6kBpuWWPfsow%2BEB6PN7IywvXMQwg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":14,"value":"https://www.ebay.com/itm/275481671524?epid=23037864010&hash=item4023fcb764:g:zDQAAOSwMpBjNzBD&amdata=enc%3AAQAIAAAA4EBVD4UR2ZERn%2Fh4WTuiwSMCKUGd%2F9q6tB4kAVeO7ho8FWMvxffMPNfj%2Bo%2FpHsCzSzoyZsZdc7MsjRZp0jIKyaf7%2BZLclrS6VRH4A10zQ%2BwIjYPbgX95o3bs%2B6CgQYK3E7yroo8Qmd8XO%2FmYQftry6MNTXAWK9iM8dmPRQyuaiB8ribidWhSrTHEuleWR4a%2BKGeFz2%2Bp7l%2F2e4%2Fp9UQ414T5oK%2FSFCD5fBqsowldPC1cpCOeHChLa1doOx%2F19ge24XSn0P1bwCANEQR8Ibb%2BD42PZ2GU%2BHnThGP0B4oi2Q2h%7Ctkp%3ABFBMuruPo4pi"},{"num":15,"value":"https://www.ebay.com/itm/114978392281?epid=13041697744&hash=item1ac53f08d9:g:ryIAAOSw19phOQhW&amdata=enc%3AAQAIAAAA4MfAq90Uc5q%2BnEARf5asnqlnTSG7LvmP1omUJ0JygGULWmjyupiFGf73opsF8JQZk2RUqx2JKUXtADzEJ5DDJQ06s3sfd09hk%2FTwxF8F2KLf6n%2FZC8FJB5ZWStOE6j94kYrz2JlQ4HkgCKjCURvubUSX7SRBthVcKq0E%2FuXr1dRwE2Soks6LYbmRhBNHcQZ8SyUWrfnR6PhUMlVu%2F1BmtjZm9oUEUImFfxOEOoAn1SepB2yaUUFcUI%2FBfw%2FPskNhxhMF%2BewzTY1fVGdLyP8yz6bj2AU8RBDD6b0OPvB3%2FVJY%7Ctkp%3ABFBMuruPo4pi"},{"num":16,"value":"https://www.ebay.com/itm/364259821916?epid=4049279846&hash=item54cf93c95c:g:NZEAAOSwcUFkSqcI&amdata=enc%3AAQAIAAAA0CXD3yZZ1NEcEif%2FnfLFcPGoaHeVVFFArldVpjfyqxXOTmCuatO64KNKOs3zzOdCbgX0VKCk5Nm6nq81JD4xvPfdf1NqrD7Adc2DQzwgoQ4uIrArrBNt4chGcx0GklCBwbQJzykPgf9LJ0thnk8JM4mE2ukliv3y573mUYjjNMhqlu%2FLrbHwrjmz0gcNxLVNIwkohlLYiwkCqwzWvQlK1CnVMmV3NjStvOokV3JlO%2BbeDoZg5IgiTVtWo3U8RylpCr%2FRPUjc3%2FPFHk820KPtA0E%3D%7Ctkp%3ABFBMuruPo4pi"},{"num":17,"value":"https://www.ebay.com/itm/275816818931?epid=25034208609&hash=item4037f6a8f3:g:qukAAOSw05JkRwuv&amdata=enc%3AAQAIAAAAwChwMuAHpgZ209pV1aJ1NB9dRGXYIZUUcSKDQsdB3qIEFr3vu51BpKdOTcp4Wa6lu7yDiVViRmX3CNi2OosjtFEeY6ZlibAVmJtRMwy%2BkE%2BnGuEq5KVViFCj7d5zrTm2j%2FuPnESV%2FI%2BtvA3V7Zzkx5nq8ftYuHqmLCSQjtn%2B9M%2BhSjE5WOX12rl%2BT2ntBsBd%2BmiCDOic5cKloZuQw5hApBYqaYgcXyQ14Thj5OyeIJFGOHnhEVtvnHA9jhcRh2ZsVg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":18,"value":"https://www.ebay.com/itm/402974377238?epid=168494364&hash=item5dd3250516:g:SfUAAOSwvzZkBA2S&amdata=enc%3AAQAIAAAAwKDz2YpgJQoUTGmznSSxFiSUegpATPnA2U7uTMlL0cF6BOanI41Ydc8DAd79fmbccaB7rJhqVubVMcwnKFmStbe7EH7DqTcgI%2BansiR5OQcblmFszet1l4MXmmTmk9Wbe8akeJCmM49lwO9k8PSlCTt5XOO%2FuYxHPCqwiZZ3qaPBVHTllVoLT4UN3%2Fns628HQo7cv9USSdwaBVVxFKXe%2BdaaERK3GGv7fSysbWQH8A2bY%2BnKBCM0nBWJC2H5GlscSA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":19,"value":"https://www.ebay.com/itm/134473303459?hash=item1f4f3bc5a3:g:S5QAAOSwccZkAdGW&amdata=enc%3AAQAIAAAAwOYZvXXRZy2aIFnCLSRw%2FnzLvcGxF3WbXV%2FjK4dViu%2Bt1JBMdnrFNVDole%2FcOLuGxFHej4zII16zhP382NKiZ4qlh9lxhmtSiMigyGJH8GPJs7qJLlbk9w3JjJQpLM3rWWYLcbz1tv2mBCKJipdfN1jnca3xtLPsHBWGn2TVIjDRNpKlNuIDGMF7Y13H9uh%2BCSTDqDpzwoy1YxoqCGg21FcJMhHT0%2F2VDxA3GaviTzafHm%2BaVZLbK3e5E5K83FOvww%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":20,"value":"https://www.ebay.com/itm/185690561222?epid=13039001065&hash=item2b3c051ac6:g:hrEAAOSwxOxjWETt&amdata=enc%3AAQAIAAAAwEjar6E2wQdv%2Fthh50KilzigmaKGpuEs%2Fh6sQTFyUwbU%2FXh4DCC6JppxOR4A9CkTtbYqGLXjtMkDRgG7Ca01%2B8xRsRFe5C7vuLj4w%2BePUXxo6vfI03%2BRRaaPlSFTf9W5OicpSyO8MQmWm2hVFKfCyJhGeLn6uViUb2OBgp18IJPU5HBmdyu9mkUOPsQnu1jpl8aweQ5Bpz%2B4jdGKdH2YiS3AskOE3LD4N0SVlP0BuEQ1KFZQS%2B6oAw3cgQyyj4ianA%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":21,"value":"https://www.ebay.com/itm/404303235453?epid=16042424111&hash=item5e2259c97d:g:FRAAAOSwYTpkbMnb&amdata=enc%3AAQAIAAAAwHjJcGlb5ZC8hhPfyiRmgZ8mXkGNzPqVPZjTpmd3gb9OuPsuW9e7ApE%2FDjrsZLRMK6jsdFICHDYyF7VGHOgD2%2Fzwqeby6JaeuwhZq60FnpU%2BuF9oyF%2FAi%2BK5Q07RRoVpdtratU8fmLBYYwmhk3cHnNbnRh9T60pO9fZM7nODQlarZkhpHjPGTpbIhoZvES2q%2BKanf%2FlVwz0NnWgES2WiNgiowmrnuhm594HoTMu442LSzMI9th%2F5eVrHK5pVhG9QAg%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":22,"value":"https://www.ebay.com/itm/164949098513?epid=19049315735&hash=item2667bb8011:g:ICcAAOSwN~Vg5rB2&amdata=enc%3AAQAIAAAA4GkD9szwmJRjOSt3zF3Fk7Hmo1tcPbP3CQ1qxmPrOPWRGOMy5ZHdCqHfIQeALZu%2F%2FOa9SPUL2uG6lUGBXsitKQiyZ%2FNXwrZCHW2zy%2BK6BiXX5NLk5T6hl%2F8XqThtUKc9EF9xyjGAOLgloREeuUyuEwoiBtTnIOSOgYZ0emTNfAxFosvpvM0swOS4cLFbwfRGOiUH75ojHZn%2Bip2%2BdzgPwn2Zy8Z%2Fsl384RGpSshOGePfZndiht8zgfbiq8WUpSVAmZh4XZy3rdwMoOrBcRIGj2Jqwy%2FRaXgnNm7oQ8byN1Vp%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":23,"value":"https://www.ebay.com/itm/115809329987?epid=28034216926&hash=item1af6c62343:g:nn0AAOSwKJxkUw91&amdata=enc%3AAQAIAAAAwKDD%2FXgq3EVd4n81oXnDU68JmqmHQwoJStuYVChNYzWEj60LpjTbJYasC4w4GAL%2BwGKWOL2to1cQ2sWQnSoJMY9HxyPJkmASNGkgFvj1f%2B3ifh4H%2Bta61cZ2qDvj%2F6Lycvi82FHVVEaX3gyeYbChuTvhsrej3Sxvr8WHiPPshgvjaF72%2FeJAMa9K5fiESO2lCp528s4RmGGLjvaECBfPN7RZxNB9ppxJr7Eu9wP31nWfZJV5VbWjVSkTDOQzO62MDw%3D%3D%7Ctkp%3ABk9SR7q7j6OKYg"},{"num":24,"value":"https://www.ebay.com/itm/155381097344?epid=114805777&hash=item242d6f6380:g:jxcAAOSw-5dj1I~O&amdata=enc%3AAQAIAAAA4KhQZEEtzmogXdTiYCEhbPwdI9mYHXRF3He5cSa1Bzv6rLA95yAKrFJUWZUkLDNWgPuIyd7QwT88PpRXUriFaciBz1zbX9lJDpZ7oc6zgaQHVrd1%2B88MhBAdX7hETlEWRVc65ZwB3aL%2FPetd%2FnY4dME5HZfMhGDNJyOFPPAZ2Tj5GWOseOTNGZSeWnaJPGLci4nNKypCubUqHJs3J9Kz8mt8YMIOpnt%2BxfWvgl9aPW%2F4AlcxZgvXg6xK9iEPdPn4N14NKnQZf7Hyc%2FDwfex4idPGzUZZ%2B7vDrPyWEDqGz1uP%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":25,"value":"https://www.ebay.com/itm/354806773691?epid=239099257&hash=item529c21b7bb:g:Fk4AAOSwg2Vkbp-Y&amdata=enc%3AAQAIAAAAwC%2FBrM4tFWJaQRC%2F3vv9mUoteYksdUryk1bthxUSKtVnRr4g%2F4ZfhelANjRK%2F3GL%2BCWsDXBddthqQAc3GVYq%2B9NhtjCu7JTS%2FYtW%2FhmNFvsYlwKwYHdH9L2xIelFcBZcI5rhCaCfJjn79OdUZHYCRoULOVfbEeF5F3knBdyyqnvCO8y6L6UJJpu%2FNDrsdl0BqNrOGV1R%2Bun6JfVO9Izo43oEp6GdMJWabuzfnCsQqiko716IhD%2FWNu%2F%2FKRiraxt34g%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":26,"value":"https://www.ebay.com/itm/266226088419?hash=item3dfc4fb9e3:g:I1sAAOSwwMBkP-LE&amdata=enc%3AAQAIAAAA0M8hEJzrbybUCEbONS96IOahWzXLESyTE9DQN9PrWhUXXz1kv3R%2BL0Pgb9aXOMm2Sb41eDHVEcNyK%2Bw4KZmMZBGNuQese8LF2fzd3znf3N%2FACrprit4uYAPMVKHYoJXYxejZWYMp64WWb5HRxgSDIu02CNDsfY5ZCJQyJZEZPeVZzT4aEmjkXMIjJmTfYTBG9O5%2FDjFq83nSJsg3PNL%2Fqq6Wm70vQH5HmfnNQNlnGHpBZk5QLjBtmwn2uFIsUrimiWVvX3QtnSsZF6%2Fj4%2Bvfd5k%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":27,"value":"https://www.ebay.com/itm/134292112524?epid=240455149&hash=item1f446f048c:g:P1IAAOSw7uVjUqVK&amdata=enc%3AAQAIAAAA4FBeMKYz8fy1ALbNWF%2FbmR%2F7TvK8Cq9gv4%2BVjG5YEa9UXnFcx%2BA35y90j7Tw43Dsz4VbInb5YcGDIgqBp6dOLfUmZKWkVOm2qrsOvizIqwPOkNOdi2wyofQqJ10aPh1NehKlRTwWezbS8tDKtuO1z%2Fu%2BkA84EZfNgoEtRsTKiAbqsayfDa8kcPwdmzWY0fym0McJ4adtpY6qYGwESEnc2vyPWmLLrnzByLgvyjs6eVb%2BA5CH7BcpPQpw94x9TX6jTg8Y0iCGWn244wvoCSIiPcC3gBzhGwB1Agk4Oij76JIp%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":28,"value":"https://www.ebay.com/itm/266065363299?epid=216202149&hash=item3df2bb4163:g:JHIAAOSwij1hUn8z&amdata=enc%3AAQAIAAAAwHysjyK3iBkwGkPgad7z7J6xiSCsfGVo6Tz4GQiyvBgc2ub8VmOJ4VG8q%2B%2FnXc8nAwZUeIVQzLYdNHZw9neA3ooPCLM9hwJzHNmVGzEZx%2BeLnr6s00EJZEPhJQpPow2eiIbXcVcL5y5EI7SxTg2D0imfXM6QHaqszWYiYQYbn%2FZbAhYoK6UxvbgNzvwDdfYX6eomG9%2FS2e%2F%2B7FsMebSNB9wjvQUug91DdC4fjvSvv9QG1wseRc6lNrWqQCwZzLxROA%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":29,"value":"https://www.ebay.com/itm/115766777445?epid=24032598957&hash=item1af43cd665:g:E2wAAOSwSd1kNXQ1&amdata=enc%3AAQAIAAAA0B57qhWT%2FfPxSqvmXObKn%2FYfDWP5awYdk2daFCpt5DZVNMIxdg%2BRD2b3AmbauvlGc5VTU1DQ8bP2wV3xDcLBKBGRpqgqzab8uG3zpnF2%2BPkKmT9OJVKVw3xypbFmrcVw1YahfyVB5B%2BV4B0OtAn95ci%2BXy%2Fo68ilU7PFOty%2B%2FDbOhYEegcwTZL%2F8%2F8%2FgWh3Fc8ksUePP9bMtxdQ%2FUsJkxtCW9RjFufH%2FEIpxTberMDYZQK2pmVWhWU4yNDkRw7%2FCXPiyChxsXp5aJfBBrvzZ%2Fqs%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":30,"value":"https://www.ebay.com/itm/255807288830?epid=26034221296&hash=item3b8f4d75fe:g:ukgAAOSwSTZjYqeH&amdata=enc%3AAQAIAAAA4H7Xj9pKskZseMSa6m0FvE03TlPmoQGqPaWxclDuReXey26jBkzGv0OxVXXd560xUE6xVDmYAgG0PmBIyFnq9UmnFXy%2FmbAyUb5j%2FcX9wmF9zkaGUgVSDQMHWM8XAmDvj1dRvGmPslWx103hMQ%2B1ScSRo17BMkl3IhF86K6IJW0CYemImMsELh55ZNARvz97Pe1hhoC3QdWuwKVvIfYQbq4MTS955b3Ws7BjgERzYCX1UfiCWpHb2fSoHegsP%2BXdO1Ar%2FB0R2S75M02sDtSfC%2BFWErAP6j%2BZYrYN8prpytp1%7Ctkp%3ABFBMvLuPo4pi"},{"num":31,"value":"https://www.ebay.com/itm/115382464560?epid=9051376057&hash=item1add54b030:g:4ZkAAOSwdOdifmmg&amdata=enc%3AAQAIAAAA0ATkmb33SPhvPEqzrrkGqKzYBSpkOgybw%2Bpl5rw%2BhgRtnBZ6TT9bbR%2F24d410FVzuXLN7IVbF0Gm2K4akt83UCM%2BGvGllSbpJRAwakrECV2raJoBFVZKMAgcvIDkMTzZkPuhSzQJj%2B2BTsWuqlRRdAPjEx5zV5mr27Mxe2PYs9km%2BwEywWiGCg2zk%2FVDkanqrauk0H5fcnuXK2C%2Fp%2BJNiE9qY0WaBsa8qok%2BGC5r7GDOxghiLFIHIDOwUZwehaNPsWMfln1S7CvzzuCl23eXYUU%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":32,"value":"https://www.ebay.com/itm/145095967799?epid=28038172042&hash=item21c864c437:g:iJYAAOSwtOFkaqFa&amdata=enc%3AAQAIAAAA4GX8FnYd4XSnVPWzjhYQ%2FSil88rzouAOWybF4wnIg78wkvDvl9D4v2AqMBS2efmsmjiirHO%2FMlXBCe%2FX4uLUneEm2cH2%2FqYLrs%2BX8IApA3eLntlECgKGtOrZ4iLoORIMK6ZYyc2EHwdG6kRweJsJxsktTcZWi6enG7kBDStBPqn2hUIgnSh3QHk5u4QJCWf3%2FZg%2B33zkTLiwM3ZlD6eu1PXmiVkrYnb1C3SYLRHWtNS5w8v3DdP%2FNlzruz7BB7wcMDMsHAUuuYaua%2F4ZdKZ%2F3w5k2YdEzh0gS%2B9mfp9QrqEz%7Ctkp%3ABFBMvLuPo4pi"},{"num":33,"value":"https://www.ebay.com/itm/195558414119?hash=item2d88309727:g:Ll8AAOSwRaJjw2kO&amdata=enc%3AAQAIAAAA4MRvCnxT%2BEEOBEoL4Efas%2Fc0R%2FD%2FDNfkp7WyFXSu%2BI%2BovFMxBspfs4N8dIQ53MznQDSMZi1fqk04WT7Uz9rNsIXERMr0c6BBiDRyiChacUklUJvFr8gwuZmveA0Soky7%2BRmzuWd15pS%2FZWOFwZzXUhsWLRYVHx2lpWCXX2NHc3ZY%2BGly4BFngwLLA7PJ7gfSMvDWoPW%2FfljYcKnoKnfd9HB44Wy%2BYCScrZSBRGTTfjLPmFfOViwDotPAfpey3eBHpwaA3CRVOOpbfBxqWyqnYU5b1PpW6EWh%2F37F0PchBxOJ%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":34,"value":"https://www.ebay.com/itm/295672429475?epid=13023706562&hash=item44d7733ba3:g:HuoAAOSw~2JkbSM8&amdata=enc%3AAQAIAAAA4DO5fOzkW40L6mfgQfEMxnDMEuMVT6ytC1CLQEKJU6SSkYzsQlxN8GsB0HovV%2FBDC3e%2F34HSJufV%2BX4dip0QKBkQ4%2F9cSDf9YELtG0h5uhDSyUffYOfpk0Oq7Arr11lmE8n6MgWM7T%2BiOHKfItBWIU2Z1pcjldbc9jW2wRSegyqlZQhUZLQy0J56KiOuV8h1BkHBpXETC0dL6pwLF4NqAzT7Cb9QW3%2B7x4DM5j%2F4QH3a3SUE8dOylsVw1Yi8W2uCKieLAZqHHJjYjhk1Za0%2BcEo4dhUWcDGgIdk%2B8WgBrNo1%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":35,"value":"https://www.ebay.com/itm/115791017894?epid=15054602795&hash=item1af5aeb7a6:g:IIwAAOSwmTNjxuMX&amdata=enc%3AAQAIAAAA4NiRYcMzaAzlMzTXrpuAsy4NGJjeW%2FhGRkz096Q73raAQLVBWzKR0i7%2BgS27jqKu%2BjW%2FCNotSvFKxfRCZ9qdELWq0c%2BOR3%2BmkoR7ol%2Fdxm98ve3oFIspoCj1jE0TAyon034EVnXiS1NP4w%2BarAb7pOGGOFzbQCdDN717PfexKRpBfwQVNksLr4RdYILhFIygaJC9fnRb4mezxBij4TdjdFH0%2Fn2%2FSZZlvS%2Bebct9IyxwXlvWktHJojqRu%2BVhjCCYBX58vmqvdVw1L6fiUtO2lwFy4sxV2BGtJcj5Ke97iVw8%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":36,"value":"https://www.ebay.com/itm/266249818815?epid=109338283&hash=item3dfdb9d2bf:g:rwgAAOSw3b5kWGuE&amdata=enc%3AAQAIAAAAwGK2P8yGPXbKb1Od9OXYevRulGTQZhwbQCwxe7luuCJA%2BesHWPCaGx8ur9IzuY2%2FdQXKQeW91Zt5kk0S4q8Ll%2B%2FTNX1wfOyMxJ8AtTDXt04ktCgrzH9sBObTf3VNbRZlzTPxAokHvY2PLOHuGyB2R342ZY5r1xMyXvSnyM2LRrXarOUc5MGNxgVat5QuT6EKQh5jK7NdjB9pxMedEw5KQUC%2BG2N2lqTFj%2BPGQLoYcGwW1yQPUr2GHtWj48kDqZgTsQ%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":37,"value":"https://www.ebay.com/itm/275715071825?hash=item4031e61f51:g:oNIAAOSw9PZj~JpM&amdata=enc%3AAQAIAAAAwDyMsT%2BV8EBIIHfIybtIt3IlcpnwsSx288jrHY6Ci4dd%2FL1T%2FiYU5ER6fw5A9KmVy8Rz4o%2B174lms3hVV9QAuLDUZ8wPsQEfJ29uVHe1QdVP2MZbXbK%2FS5BMzgHdHfxj%2FO1AvtCU0u31gfDqWiNOcz5Th%2FgAVx6UWf89z0NIkr6eg3qHTNNpx8RBhMOh3JafF1wkjWDrXsZuiRIh57SwvPJ61Vs%2BSw%2BP4pHwFoDiP2wmiE%2BvG%2B1WPy3ALvCZqeHu4g%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":38,"value":"https://www.ebay.com/itm/374717197868?epid=228576574&hash=item573ee2ae2c:g:S8wAAOSw6Ztkbs9Z&amdata=enc%3AAQAIAAAAwDEljen93ERQcKwp2gIxhfgVcGPx0jxowHt3fb76GczjSU%2BtC9JV90U%2BAQqLjznm0%2B7%2FIFmX7nwHbemlal1O9UZjNJJJZYX5HF0Au0idSN3FE4TFIG1d6SLg4aAN3PX5N69dqV8W4%2BobeSoOwm%2FSMwlaCQ7aiszkAjWyHo2l2FCAQQ9HvTlZD71R4DMw72aIFW0ylcSajb7NRoMsa2hN%2BWsKKQ8Quf%2BXipdF8r4rIn0mPIddjERmrVEKU6DtP%2B7TYw%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":39,"value":"https://www.ebay.com/itm/125804984552?epid=240377092&hash=item1d4a8fb8e8:g:ZM8AAOSwtBlkBYcD&amdata=enc%3AAQAIAAAA0O%2F530L3bHGyboQ47tj6fn%2F4fVulvks9Txui5I6VuiAMJbXa672NqFL2rLCO0aFIQ0oU39mClfQXuzk8x8ZCcul8relCd0eM1Q5H7EFgevbIIz6YmF10StJ5vIJMIPdWiUr%2FVhjmVdPe2cVualVEuPBRD1EQXRWZaCWw7AkOOalZIlI55Q8UrkIS7QbY0ILy2PnvOl%2F%2FTOLoWKVLEHs1OfGZciXBqkBSIbiwvdQwjX6dfyYg0eRNdJ4SVfRRfJ7ZMjTGDpIFdS%2FFZgT2pCg6XHs%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":40,"value":"https://www.ebay.com/itm/265911650646?epid=3041485877&hash=item3de991c956:g:6NMAAOSwP3xjNxwy&amdata=enc%3AAQAIAAAA0GQWZqCbWUn0oDBhCeRY1UoDIeeh1r78xeaN%2FWHdi1RiY25H1KvXfviwnGyfzigUCGSXJ%2Bo3OKctToGyPZ25Lf9ewoAew%2FN6d7N%2BsrlYRku6pWBeq06w%2B13bN3o%2FWY559LiSJFp7GJRUw8Xjr1mJnJ0CreVKdbles52P%2FW542i%2FuxmRcKLCq8xqN6ZgODHZYvjZwAS8y6urIgjm8q6WnhMcUrlMqZ1D0yUPBUVeD4iALfkoiSVkHNG9CvbF4mgkWp084qCkfwd4MLhXXQqD7cLc%3D%7Ctkp%3ABFBMvLuPo4pi"},{"num":41,"value":"https://www.ebay.com/itm/225032084926?epid=25023700421&hash=item3464f51dbe:g:S64AAOSwVgpiqlye&amdata=enc%3AAQAIAAAAwEGdNUt9XXTnVaZ%2B6L1iET1GDi5hSqDPp7Ed0u%2F5BOBXhVEBEjvafKhZSg7Xo%2Fh4kHVvTCJnIogKcbrRhYCgIXXS3coML5B2pZoZbpEcFgB5I51vOl6Jx%2FjNBwaLXy5ivr8LzHu7bOHsRrLqqbj%2FxUpgYqDlNNYRzNXDUNxsDpDk2xOAtEzkKw4Wgtwn8HG30JTIUtcCbeAYucQiWiOiZ3%2B51kfEOqWq8a4TgeBgUACcqCvqn7OiBPFXXamQVhtL1Q%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":42,"value":"https://www.ebay.com/itm/115813971678?epid=240434004&hash=item1af70cf6de:g:HE8AAOSwD7pka-ye&amdata=enc%3AAQAIAAAAwG9cmrsZyl1i9jsstX91tXt64HORisj2KlJmakCyc5eRSLazgmA0VtsJS6a6QVIBGtEXCPG8xI0Hq86MNqc6UmFTEU%2FuStTSV1GqTWsfr3xkG3armBiHg7wbF68cD5Q%2FWzy2DHNxJWQt%2ByNKiOX5GA2Aulz9gRHhqepG9FSoOXxk%2Bb1rviAiw%2F2i5Gt5ud7AKAG9ilCnd9pWT%2FIyMuCOsx%2F%2FP1a8DpjjK0hh2KAslSrwS5lZjrDPgI4PiZH%2FN1WHkQ%3D%3D%7Ctkp%3ABk9SR7y7j6OKYg"},{"num":43,"value":"https://www.ebay.com/itm/394434823940?epid=168534247&hash=item5bd625c704:g:lhMAAOSwgFFj0von&amdata=enc%3AAQAIAAAA0M%2FIzKUyjuP64oVYg2zv2N6K0HV8Dsw%2FcT3wTKNUiZSokldICyCOb7GbFiXSs3fmfa93GI8a9rBaVOMm2AaOIqOybFBoOnlqRXbs4GXpgulmg%2FGHWkZGFn8zzIcgtj5CBqWeQ5R2Czc9UkTohD7nS2eRTh6pbzFeG60F6iam3QnQRpc88l7EnlsJE0FCF4%2BrsbHx8zKRX5UmeNhVK0sQA84brDNzyasZ6%2FhEC9W7kdjSUUBT93BHd0Hj9%2BRQTLoMSLaeKqTmapZfBBNjFajwGlU%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":44,"value":"https://www.ebay.com/itm/385598884410?epid=99987131&hash=item59c77c0a3a:g:C5sAAOSweQ5kWId5&amdata=enc%3AAQAIAAAAwB54SZlQW0p5KQfu0jP9GzVeGbX3lxFThmXOyzH3N2cedj0%2BqlnwMOB1CZSnoCp%2FKHUsfviRkW2bteQEMlnc0fbzbebo66rf%2F4nzJAoUA0yCAmi28L23hP41DQaIdajplNpkgpiQHE%2FZOcGb0IR6FmdQXth48g33MhZtTZpOYcMPiPGtwcJzxiU7sARsGQ9r%2BeCNw%2B67Wf50K37KiXWi9rL14eq0tV%2FfbdpLhQOh2%2F3GE9Ql8WAo%2FBON6jMhqrY6WQ%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":45,"value":"https://www.ebay.com/itm/204347780252?hash=item2f9413ac9c:g:dDIAAOSwHcJkbpJo&amdata=enc%3AAQAIAAAA4G5qAeMF2c%2Fp99qdl2e4QsV%2B9aDtdjvQIZUr2nsDzWMWSsXB%2F%2BZ7eyYMzXEY5iVWihbArwRh1MXNQhrXqXr0MfNkZuBlWyZmH9nyoSPtydaQF9jgRRk24O1%2Fhdqo%2FFAutR%2B%2F%2FcDnpG6HbNCktiCvn%2BvnVM1DJQZebRcLjEyQb3mXY%2BHMzxPMXEt1KDhRBk1eVVLjfh9ybQFHWHVXS95gOi%2FxI%2FSMglgvtfC8Mwf7xumjQshU04N%2FopuFbJcMBcv0kOhBbvnBa1m99nbbnDl5pbux1ugkP087E%2BNasU4Khg2Y%7Ctkp%3ABk9SR767j6OKYg"},{"num":46,"value":"https://www.ebay.com/itm/385255115294?epid=240210725&hash=item59b2fe8a1e:g:cxYAAOSwuk9jgIHV&amdata=enc%3AAQAIAAAA4LbLMVk7C1FrgwVIu0YOX625J56lmBpPXnvKUAHwy61DAlTwJRki2R4xdtuifLPLOK%2F%2BKxBZ9IqnkyFqOI8L%2BIHF6VsEXhF%2FkWh%2Fhnvu8iKt9OY%2BaaX%2FndpEMGK5ovkZpsi6g2GVKBUOQ8nukJMR7gpyJnYPMBrr%2FXBg%2Bopp52JjuvqSONdf%2BU%2FAAf%2BvL0Wm6jn2JND%2BUU%2BKB9XHAMmYFAKLHqMmmcP7urDDm58vYgkgbzg8vPrnJNmM5LSGGwQlrwzoU%2BMAW%2FIIqyuN4QdKlvOUZmHVte%2FDlh09tPm4qL39%7Ctkp%3ABk9SR767j6OKYg"},{"num":47,"value":"https://www.ebay.com/itm/314579175553?epid=240282853&hash=item493e614881:g:keMAAOSwZXxkWJz9&amdata=enc%3AAQAIAAAA4CVZ5wnwqlSCS1YWHcywmTZIpoSq9MKZI4x0QzZgnK4WlYGrgYTGb60fL6LBfKIZUEYQI75%2BTi5sIY6y3ZsDcJOW719%2BUzOLulrXpw9A2xsYYS%2FAkkZAfz96VSHqW2jOLF6VHmMp%2B2kjieViO%2Bn%2FiNjJtaSYBp7VRBihr5P4GMg7GlGaWQnmbByhZXmIdPsqZBqR7Ze8YSII8qEUEcG%2F2ba9RY%2BUmeaw7kxtSNonQwLciOh0GRCar9PDDCFFJ9xBmoYAy2xC00KdUHdh5nn8dOpIAcOWrNiFa6kwu8QRPrFP%7Ctkp%3ABk9SR767j6OKYg"},{"num":48,"value":"https://www.ebay.com/itm/266246155894?epid=1981183096&hash=item3dfd81ee76:g:aJcAAOSwW0tkVH8D&amdata=enc%3AAQAIAAAA4NSs43V0ZX3nNh7xuPaSq0MPHD1DrbFDQ31ldqm0v3BUSdkBlQ9PcsinazAjKxQVV7cZykPIg1%2B3UqbpNe9Qr0pn1OC6mWSsNy%2BMgWmEVX3JxdlM6ydk8KNbbDkvLmC4uppTCLrVYNjWz2EpiIunrM6oqzM04E2HAU%2B53wgVmeF95t82tJje2WjqZvBI5k0ptDwfv9p6ZnXwptK036YEk6xQaeNuLVuaI64n230LC5di6kp%2B5GH2hhnrPFs0%2FQVzPEE8AOXeETLqkuB3ZoUxvTlQYPs64UjEyeJMzuG4kDId%7Ctkp%3ABk9SR767j6OKYg"},{"num":49,"value":"https://www.ebay.com/itm/404172805708?epid=109317046&hash=item5e1a93964c:g:egoAAOSwEshkBX29&amdata=enc%3AAQAIAAAA4L%2Bcyf5A6p8lpN3tDYasPFw4urgf1QST9NSS8%2FujqkoYqEraBlAEaAn36Zl1fkENjNqSEx9a6k9N2T16vwc7zWhu%2B4m80XC9prUmMyRjxKDxgPuus3J6ZrVWX0fCbEhoIB5NjQ3HVV42pHF9cp8peiwDmnPTuj46ixo0cC%2FD5WFVxNqQBMcHS44EcNKkGdTmcnhscthTBo5qSuJr7InRcb%2Fs1iXcYBtaqn%2FPzhXP%2BdTX0rpgowXXJd1JJIUhVN%2BYp4KbYvJGFKfjjLOXnSTrLt3jpfIPpEgsMUsx1hmXktSg%7Ctkp%3ABk9SR767j6OKYg"},{"num":50,"value":"https://www.ebay.com/itm/175601025545?hash=item28e2a30209:g:pSUAAOSwAjpj39Uh&amdata=enc%3AAQAIAAAA4JtdtqZGD0DaxP5aiGhnDTagbGu9f5fI6DnTdtAAlfVjypwfAjWgvmYBGxCLWAsaOvxD5DkU6Z1%2B8pS5j7JzI53ltdrlRLdWlcO6zGQJ5FKgxIuzP9AB%2BJOoTi7ymG3NX7LB%2BFoRxaGk8H7TRqnbcUTsFu08q6Wviac1RRVOEqW1jRFdfz1SSPWugqJHa5q6Q54rDvHGaWffGml3qTueC3kO%2FHZsLC%2FkmBEF7j8cbyZ6D3uDYv9P36tYESwXEutIHJGymO0%2BLvl66enzEOKDV%2FJ28OXegbTLMdtjxt42%2BKSa%7Ctkp%3ABk9SR767j6OKYg"},{"num":51,"value":"https://www.ebay.com/itm/404172716323?epid=103043220&hash=item5e1a923923:g:aCEAAOSw5S5kBYOD&amdata=enc%3AAQAIAAAAwAEqcW61tzBYheFVcLKrztFd4jbhNUIOlCu68BpaMltkmVY%2BE%2Fh%2FXAp%2BEq56fYG%2FbSq1ZMGqTatNiRWd5Znnd1d%2F%2FQeDwfoaYUF1oEgOC%2FR16f%2BixZlEF8UnigH3S8ai0c7lWYlqf7NP6m544ROPYrvUgaTcabd2TpqG7pRR2vqO4Am65Sx85AI8hVQwfV8CPDnx8f0tfz9EmqQXpgzFHeTOGRRjBQEUN47JT1lPCDWLr5VbHVBeS64jOjqUF9QeQQ%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":52,"value":"https://www.ebay.com/itm/234972583475?epid=7034636144&hash=item36b5751633:g:JUcAAOSwOPpkNcYf&amdata=enc%3AAQAIAAAAwJTowa4riLMf%2BrbZOFjw%2FpyMKzDMbbpRVveSoVPkntnGByRtXr0iOLGQbuhx8d1GTd%2Fyq2Yz7j2PqM8z79axrNlajdozMIeDdSfZFNNGCVGbGFJr0zhTektCAO%2BsOoWfJ8d1QAUTVS8UDjeLcgm9Q%2F%2F8IsAOaw7PhmB6anER4kj13ftyLJ7lnSyJx1hoCHpqVa%2FYUoinYRu35ffMFQLcVN03Ai5ZFwU09H%2FFvSP8JR67xkg1Yns%2FnyQZko9A5aNhCA%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":53,"value":"https://www.ebay.com/itm/354777150278?hash=item529a5db346:g:6woAAOSwVT5kIliA&amdata=enc%3AAQAIAAAAwL2KambFmV0v2f%2Bo48YE0kLMUkDgpye06l2Pbg5Ypr7MUtrxSbdEFRjdwADDkEK2VPX%2B0kwg2jGsObWRAF2AZLRyXbOom%2Bm7Z81AOVoyeo5OS2ToArc7g9oJaTtYaXdBcjvb8Zz%2BcAVUNB336OT%2BZf3BB3lcuzTRnzCnXYYF48G83XxEY7beer3r4E5heW5%2BLl1VK48WXDI4E%2B4nMC5gMhyI8WiPJtklVjoH%2FHtjsCutMkWA5m0C987GvsbIrRZnSA%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":54,"value":"https://www.ebay.com/itm/364190042333?epid=15019024614&hash=item54cb6b08dd:g:GXkAAOSwUj5kGfn2&amdata=enc%3AAQAIAAAA4JKv17A5cE2QI7BTqtpbhom1dpnLUJOirR04JMqCkztHmRURtaMsh6YOvAslQvbRCvZgMB7FY%2BRt7EdhF6habqEz%2FH3wNYwYZv5TT528Tsc%2Fy0ZF4qvyZasX6AMIuE6WpSjjxD9zLa35syIzfirWW6Af%2BV1AqjodZ%2BUL2K5arIP9nRUGtzbKKPhxOVP4DYIyfFnmj3VIWfm720owpEf3hN7b5NlkngUXHl496A6fbtHyIoJFfEyxXneLPgJu%2F0W6uGtTbrEE%2BRneFqmDdo8qGx%2F0b5gsIj4%2FvCFX%2BcxCXoyp%7Ctkp%3ABk9SR767j6OKYg"},{"num":55,"value":"https://www.ebay.com/itm/185662256826?epid=111218208&hash=item2b3a5536ba:g:txsAAOSwhgxj~K6y&amdata=enc%3AAQAIAAAAwGNMCzp7RP3gzxS0lMJ0MO1080FvhiAk2dNXwcZwhYohVt31Gtfcu9zXPTEU8tuMtEdQjRiVlBWKnHBwMgXcaLseNLWJ02m0Qm5leo6pfErTWWzRbjavfFbZFte0wbcQHs2SoDfjdyPh7Fbt8sEltzoP0MicPhvhZiyOe1MFU0FsNqq%2FXZ%2FOKa9%2BHtoxTbXnnU%2Bcgmeh1QlKSeyI6j%2FBLmDPs1ZGTK3W5he5WoQULq8kf9JWuVZDKSE6oBppe%2Frndw%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":56,"value":"https://www.ebay.com/itm/404172810786?epid=240060051&hash=item5e1a93aa22:g:2IQAAOSwN6BkBX5k&amdata=enc%3AAQAIAAAA4E3Vq4D3CP7YwUp45QE%2BwEpnYRe4LczMyKU8OYYO3f9Ze3Gm2hqtaGZcad9nuf%2BC7zCjS%2FG55DAlUrwsFKUIabbfjE4iqbnJXXr7vRRkzVVMPCqJoqUUur%2ButxhcaKzUcBJecsZVLL7TgqMCelZJqEVnkT%2FqWz7xYJPGghlcr3cS8%2BfsHD9RN%2BBlEA4wGc0Uq3bW2trXvmrHyD71W%2Fxoo7zoVephGIHS%2B52aHDvAjNlgE%2BVDwoM%2BS36POSkcoqo1DHsPg%2Bdc7HXHyPgZcpY%2Bg%2FX1c26vjkxpYAhDGS4kiKTh%7Ctkp%3ABk9SR767j6OKYg"},{"num":57,"value":"https://www.ebay.com/itm/175636718714?epid=21056262184&hash=item28e4c3a47a:g:FpMAAOSwDupj23ys&amdata=enc%3AAQAIAAAAwJOKWDLzb4QR6QTWLQ2rFWnNOLqYEVKx8hkq7%2BeCnz9VRv8fs80GQew8iOoekOiEVwwaz67PW4jtyHflu0%2BOa6wrUE3ozndFFTCvPLRiMl4i0GsRhNzlzqeXfKxKiuewxz%2FiUMIXOnHX%2F72Ke5IVsXAVzOFETeYuZulBMA9kI9bTTChKWySyGJwXylp3dXszn8H1MjQ6rG2zR%2Bqmq4u4rQdjbdw%2B9dCSvO%2BnvbZ0l0EoUgmobfu4LUzJv7DqWIpgpw%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":58,"value":"https://www.ebay.com/itm/166093060173?epid=240200776&hash=item26abeaf84d:g:EmQAAOSwiLtkXfnS&amdata=enc%3AAQAIAAAAwDrU5noZec7LSVt0LBRjb6EsIqLZxFouWLD3bXAmRtpsrtJJ0XjKJ4s4oVao54RwFXCmY59HZDaeATS7nyZQ1VPe4HMDgF7MRc%2BAem957352z19GFdPBMcbISKRkEH9TZ2U1njFpnZPkyf4Kmk3q2xTj%2FObZuZ4Kj0JV9JrzRV6bVSQFAdoBsA2VOGPesyl52jDsgoTwg8iUA0W6WuyJdhVFVv792b%2BW2SiNUk15Ha1arSTzLMebVI0warlOOzFepg%3D%3D%7Ctkp%3ABk9SR767j6OKYg"},{"num":59,"value":"https://www.ebay.com/itm/265620291838?hash=item3dd83400fe:g:YesAAOSwkfhhnSk5&amdata=enc%3AAQAIAAAA0B7zimYHFc6DQFKkkTAwopA3UtP6x4ItL4wx84Q8sDi%2BE7HVh1Z3zTCt6%2F2klTQ0IoKzDJi68mr78SXkI%2BhWNQ2M5YJ2wi78XUcnjZPjRWG%2F4fkGVg2FBAVKUPAKyYqvHA%2FP5MRMwz0rVqrIkw5M2n8U7uVhnCL2IlEPHW7%2F3An3QwXh2dqOo59rfAyNlLN0B76MiJ937jzm041ruKsU19ggk7AmkHT9vzRgMJHNdcOiWfRemLfAMidMORuHpjL6vY5XS1EbdEUtEv3YDtgIaD8%3D%7Ctkp%3ABFBMvruPo4pi"},{"num":60,"value":"https://www.ebay.com/itm/402891685763?epid=239080666&hash=item5dce373f83:g:Y7sAAOSwH7FgttTS&amdata=enc%3AAQAIAAAA0FqH2aeuPkAmdvvHpNEmlHhKuFVAlx3mVW6UUTfqOGNk28eCuRw1faxM6DRD5WAfupqzRAtnKXAqEYjzsFxgaQoYFEdqjF9XD37LB0KC%2Fxb5IS6NWvCHa7LA6%2FH1yg8lk%2BgcmhvSJzt1wyze%2BUwwZxJCX6N6LRg8oS4EI7Zli%2F%2BMup9d23rCD4FVtMpSI9gQ5qNHMABomETcULS%2F%2F6PD53powD0JDkPhAHMMCiAzctWWLOTyxftoJvMyFTveZGgf6W6KAUAbraeDQcR%2Fz3uc5SE%3D%7Ctkp%3ABFBMvruPo4pi"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para8_text","desc":"","relativeXPath":"/div[1]/div[2]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/a[1]/div[1]/span[1]","//span[contains(., 'New Listin')]"],"exampleValues":[{"num":0,"value":"AppleiPhone12-64GB-Blue(AT&T)"},{"num":2,"value":"AppleiPhoneSE1stGen.-16/32/64/128GB-ALLCOLORSUnlocked/AT&T/T-Mobile"},{"num":3,"value":"AppleiPhone8Plus-64/128/256GB-ALLCOLORSUnlocked/T-MobileA1864"},{"num":4,"value":"AppleiPhoneXS-64GB-SpaceGray(Unlocked)A1920(CDMA+GSM)"},{"num":5,"value":"📱IOS6AppleiPhone516GBUnlockedBlackwhitegoldbluePerfectappearance📱"},{"num":6,"value":"AppleiPhone6Plus-64GB-Gold(Unlocked)A1524(CDMA+GSM)"},{"num":7,"value":"iPhone12Pro128gbUnlockedUsedExcellent"},{"num":8,"value":"AppleiPhone7Plus256GBPinkUnlockedA1661CDMAGSMWorkingSmartphone"},{"num":9,"value":"AppleiPhone2GGeneration-8GB-Silver"},{"num":10,"value":"UsedOriginalUnlockedAppleiPhoneSE4GLTE4.0'2GBRAM16/64GBROMDual-core"},{"num":11,"value":"AppleiPhone6sPlus-64GB-SpaceGray(SaskTel)A1687(CDMA+GSM)(CA)"},{"num":12,"value":"AppleiPhoneXS,XSMaxUnlockedVariousColors64GB256GB512GBSmartphonegood"},{"num":13,"value":"FullCoverTEMPEREDGlassForiPhone111213PROXSMAXXR78ScreenProtector"},{"num":14,"value":"AppleiPhoneSE2ndGen.-64GB-Black(Unlocked)A2275(CDMA+GSM)"},{"num":15,"value":"AppleiPhoneXR64GB-AllColors-FullyUnlocked"},{"num":16,"value":""},{"num":17,"value":"AppleiPhone11ProMax256GBSpaceGrayUnlockedExcellentCondition"},{"num":18,"value":"AppleIPhone5S16GB32GB64GBSpaceGraySilverGoldUNlockedSIMFreeSealed"},{"num":19,"value":"AppleiPhoneXUnlockedOLEDSmartphone5,8\",64GB,256GB,512GB,SYDNEYSTOCK"},{"num":20,"value":"AppleiPhoneSE2020(2ndGen)Smartphone-BrokenforParts/Repairs!"},{"num":21,"value":"AppleiPhone11Pro-256GB-Silver(Unlocked)~READDESCRIPTION~"},{"num":22,"value":"AppleiPhone11ProA2215256GBFactoryUnlockedSinglesimVeryGoodcondition"},{"num":23,"value":"AppleiPhone11Pro-64GB-SpaceGrey(Unlocked)A2215(CDMA+GSM)"},{"num":24,"value":"AppleiPhone3GS-8GB-Black(AT&T)A1303(GSM)FastShipExcellentUsed"},{"num":25,"value":"AppleiPhone864GBUnlockedA1905GSM-SpaceGray"},{"num":26,"value":"AT&TFACTORYUNLOCKSERVICEFactoryATTUnlockServiceonlyCleaniPhone"},{"num":27,"value":"AppleiPhone6sUnlockedVariousColors16GB32GB64GB128GBSmartphoneUsed"},{"num":28,"value":"🔥AppleiPhone6s128GB-SpaceGray(Unlocked)A1688/A1633smartphonesealed"},{"num":29,"value":"iPhone732GB128GBBlack/Silver/Gold/RedUnlockedVerizonat&tCricketSmart"},{"num":30,"value":"AppleiPhone11-64GBAllColors-Unlocked-A2111(CDMA+GSM)"},{"num":31,"value":"AppleiPhone11128GBFactoryUnlocked4GLTESmartphone-Good"},{"num":32,"value":"NEWAPPLEIPHONESE2NDGEN64GBWHITE(CRICKETWIRELESS)A2275(CDMA+GSM)"},{"num":33,"value":"AppleiPhone5GSMUNLOCKED-16GBGoodConditionBlack"},{"num":34,"value":"AppleiPhoneXR64GBBlackUnlockedGoodCondition"},{"num":35,"value":"AppleiPhoneSE2nd64GBXfinity"},{"num":36,"value":"📱AppleiPhone4S8/16/32GB-UnlockedBlackwhiteGradeA+Condition📱IOS6"},{"num":37,"value":"CaseForiPhone1413121178XXRBumperSHOCKPROOfCover"},{"num":38,"value":"AppleiPhone6sPlus-RoseGold(Sprint)A1687"},{"num":39,"value":"AppleiPhone6Plus-64GB-ALLCOLORS(Unlocked)A1522(CDMA+GSM)"},{"num":40,"value":"AppleiPhoneSE202064GBBlackAT&TOnlyNeverActivated"},{"num":41,"value":"AppleiPhoneXSMax-64GB-SpaceGrey(Unlocked)A2101(GSM)(AUStock)"},{"num":42,"value":"AppleiPhone6s-128GB-Silver(Unlocked)A1549(CDMA+GSM)"},{"num":43,"value":"AppleA1532iPhone5c16GB(Verizon)WhiteSmartphone(A4170)"},{"num":44,"value":"iOS2.0AppleiPhone3G2ndGeneration-16GB-White(Unlocked)A1241(GSM)"},{"num":45,"value":"AppleiPhone14PlusMidnight128GBSEALED"},{"num":46,"value":"New&SealedAppleiPhone4-8GB16GB32GB-BlackWhiteUNlocked(AT&T)A1332(GSM)"},{"num":47,"value":"📱AppleiPhone48/16/32GB-UnlockedUsedFullfunctionmobilephoneIOS7📱"},{"num":48,"value":"📱AppleiPhone5s16/32/64GB-UnlockedBlacksilvergoldGradeACondition📱"},{"num":49,"value":"AppleiPhone4S32GBIOS6.1.3UnlockedWhiteBlackSmartPhone"},{"num":50,"value":"CaseForiPhone14ProMax14Pro14Plus14ShockproofSiliconeCover"},{"num":51,"value":"New&SealedAppleiPhone432GBA1332UnlockedWhite/BlackSmartPhone"},{"num":52,"value":"AppleiPhone1164GBSmartphoneBrandNewMetrobyT-Mobile"},{"num":53,"value":"ScreenProtectorforIphone11121314ProMax,xr,7814PlusTemperedGlass"},{"num":54,"value":"AppleiPhone6S16GB32GBVariousColoursUnlockedSmartphoneGradeAVeryGood"},{"num":55,"value":"OriginalUnlockedAppleiPhone4S-8/16/32/64GBBlackWhiteiOS93GSmartphone"},{"num":56,"value":"AppleiPhone4S64GBIOS9.3.6UnlockedWhiteBlackSmartPhone"},{"num":57,"value":"NewAppleiPhone14ProMax128GBA2896DualNano-SIMUnlocked-DeepPurple"},{"num":58,"value":"OriginalAppleiPhone4S8/16/32GB-UnlockedBlackwhiteGradeAConditionIOS6"},{"num":59,"value":"AppleiPhone1164GBUnlockedVerizonATTT-MobileGSMCDMASmartphoneA2111"},{"num":60,"value":"AppleiPhone8Plus-64GB-SpaceGray(Unlocked)A1897(GSM)(VERYGOOD)"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para9_text","desc":"","relativeXPath":"/div[1]/div[2]/a[1]/div[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/a[1]/div[1]/span[1]/span[1]","//span[contains(., 'New Listin')]","//SPAN[@class='LIGHT_HIGHLIGHT']"],"exampleValues":[{"num":0,"value":"NewListing"},{"num":16,"value":"AppleiPhone13mini-(Unlocked)-128GB-256GB-512GB-Excellent"},{"num":21,"value":"NewListing"},{"num":25,"value":"NewListing"},{"num":38,"value":"NewListing"},{"num":42,"value":"NewListing"},{"num":45,"value":"NewListing"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para10_text","desc":"","relativeXPath":"/div[1]/div[2]/div[1]","allXPaths":["/div[1]/div[2]/div[1]","//div[contains(., 'Pre-Owned')]","//DIV[@class='s-item__subtitle']"],"exampleValues":[{"num":0,"value":"AppleiPhone1264GBAT&T"},{"num":2,"value":""},{"num":3,"value":""},{"num":4,"value":"AppleiPhoneXS64GBUnlocked"},{"num":5,"value":"AppleiPhone516GBUnlocked"},{"num":6,"value":"AppleiPhone6Plus64GBUnlocked"},{"num":7,"value":"AppleiPhone12Pro128GBUnlocked"},{"num":8,"value":"AppleiPhone7Plus256GBUnlocked"},{"num":9,"value":"AppleAppleiPhone(1stGeneration)"},{"num":10,"value":""},{"num":11,"value":""},{"num":12,"value":""},{"num":13,"value":""},{"num":14,"value":"AppleiPhoneSE(2ndGeneration)64GBUnlocked"},{"num":15,"value":""},{"num":16,"value":"FULLYUNLOCKED"},{"num":17,"value":"AppleiPhone11ProMax256GBUnlocked"},{"num":18,"value":""},{"num":19,"value":""},{"num":20,"value":""},{"num":21,"value":"AppleiPhone11Pro256GBUnlocked"},{"num":22,"value":""},{"num":23,"value":"AppleAppleiPhone11Pro"},{"num":24,"value":"AppleiPhone3GS16GBAT&T"},{"num":25,"value":"AppleiPhone864GBUnlocked"},{"num":26,"value":"AT&T"},{"num":27,"value":""},{"num":28,"value":"AppleiPhone6s128GBUnlocked"},{"num":29,"value":""},{"num":30,"value":""},{"num":31,"value":""},{"num":32,"value":"NEWCONDITION•FREE2DAYSHIPPING•ONEYEARWARRANTY"},{"num":33,"value":"AppleiPhone516GBUnlocked"},{"num":34,"value":"AppleiPhoneXR64GBUnlocked"},{"num":35,"value":"AppleiPhoneSE64GBXfinity"},{"num":36,"value":""},{"num":37,"value":""},{"num":38,"value":"AppleiPhone6sPlus32GBSprint"},{"num":39,"value":""},{"num":40,"value":"AppleiPhoneSE(2ndGeneration)64GBAT&T"},{"num":41,"value":"AppleAppleiPhoneXSMaxNetworkUnlocked"},{"num":42,"value":"AppleiPhone6128GBUnlocked"},{"num":43,"value":"AppleiPhone5c16GBVerizon"},{"num":44,"value":"AppleiPhone3G16GBUnlocked"},{"num":45,"value":"AppleiPhone14Plus128GBAT&T"},{"num":46,"value":""},{"num":47,"value":""},{"num":48,"value":""},{"num":49,"value":""},{"num":50,"value":""},{"num":51,"value":""},{"num":52,"value":"AppleiPhone1164GBMetro"},{"num":53,"value":""},{"num":54,"value":""},{"num":55,"value":""},{"num":56,"value":""},{"num":57,"value":"AppleiPhone14ProMax128GBUnlocked"},{"num":58,"value":""},{"num":59,"value":""},{"num":60,"value":"AppleiPhone8Plus64GBUnlocked"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para11_text","desc":"","relativeXPath":"/div[1]/div[2]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[1]/span[1]","//span[contains(., 'Pre-Owned')]","//SPAN[@class='SECONDARY_INFO']"],"exampleValues":[{"num":0,"value":"Pre-Owned"},{"num":2,"value":"Pre-Owned"},{"num":3,"value":"Pre-Owned"},{"num":4,"value":"OpenBox"},{"num":5,"value":"Pre-Owned"},{"num":6,"value":"PartsOnly"},{"num":7,"value":"Pre-Owned"},{"num":8,"value":"Pre-Owned"},{"num":9,"value":"Pre-Owned"},{"num":10,"value":"Pre-Owned"},{"num":11,"value":"Pre-Owned"},{"num":12,"value":"Pre-Owned"},{"num":13,"value":"BrandNew"},{"num":14,"value":"OpenBox"},{"num":15,"value":"Pre-Owned"},{"num":17,"value":"OpenBox"},{"num":18,"value":"BrandNew"},{"num":19,"value":"BrandNew"},{"num":20,"value":"PartsOnly"},{"num":21,"value":"Pre-Owned"},{"num":22,"value":"Pre-Owned"},{"num":23,"value":"Pre-Owned"},{"num":24,"value":"Pre-Owned"},{"num":25,"value":"Pre-Owned"},{"num":26,"value":"PartsOnly"},{"num":27,"value":"Pre-Owned"},{"num":28,"value":"BrandNew"},{"num":29,"value":"Pre-Owned"},{"num":30,"value":"Excellent-Refurbished"},{"num":31,"value":"Pre-Owned"},{"num":33,"value":"Pre-Owned"},{"num":34,"value":"Good-Refurbished"},{"num":35,"value":"Pre-Owned"},{"num":36,"value":"Pre-Owned"},{"num":37,"value":"BrandNew"},{"num":38,"value":"Pre-Owned"},{"num":39,"value":"Pre-Owned"},{"num":40,"value":"BrandNew"},{"num":41,"value":"Pre-Owned"},{"num":42,"value":"OpenBox"},{"num":43,"value":"Pre-Owned"},{"num":44,"value":"Pre-Owned"},{"num":45,"value":"BrandNew"},{"num":46,"value":"BrandNew"},{"num":47,"value":"Pre-Owned"},{"num":48,"value":"Pre-Owned"},{"num":49,"value":"BrandNew"},{"num":50,"value":"BrandNew"},{"num":51,"value":"BrandNew"},{"num":52,"value":"OpenBox"},{"num":53,"value":"BrandNew"},{"num":54,"value":"VeryGood-Refurbished"},{"num":55,"value":"BrandNew"},{"num":56,"value":"BrandNew"},{"num":57,"value":"BrandNew"},{"num":58,"value":"Pre-Owned"},{"num":59,"value":"Pre-Owned"},{"num":60,"value":"VeryGood-Refurbished"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para12_text","desc":"","relativeXPath":"/div[1]/div[2]/div[1]/span[2]","allXPaths":["/div[1]/div[2]/div[1]/span[2]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":0,"value":"·"},{"num":4,"value":"·"},{"num":5,"value":"·"},{"num":6,"value":"·"},{"num":7,"value":"·"},{"num":8,"value":"·"},{"num":9,"value":"·"},{"num":14,"value":"·"},{"num":17,"value":"·"},{"num":21,"value":"·"},{"num":23,"value":"·"},{"num":24,"value":"·"},{"num":25,"value":"·"},{"num":26,"value":"·"},{"num":28,"value":"·"},{"num":33,"value":"·"},{"num":34,"value":"·"},{"num":35,"value":"·"},{"num":38,"value":"·"},{"num":40,"value":"·"},{"num":41,"value":"·"},{"num":42,"value":"·"},{"num":43,"value":"·"},{"num":44,"value":"·"},{"num":45,"value":"·"},{"num":52,"value":"·"},{"num":57,"value":"·"},{"num":60,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para13_text","desc":"","relativeXPath":"/div[1]/div[2]/div[1]/span[3]","allXPaths":["/div[1]/div[2]/div[1]/span[3]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":0,"value":"·"},{"num":4,"value":"·"},{"num":5,"value":"·"},{"num":6,"value":"·"},{"num":7,"value":"·"},{"num":8,"value":"·"},{"num":9,"value":"·"},{"num":14,"value":"·"},{"num":17,"value":"·"},{"num":21,"value":"·"},{"num":23,"value":"·"},{"num":24,"value":"·"},{"num":25,"value":"·"},{"num":28,"value":"·"},{"num":33,"value":"·"},{"num":34,"value":"·"},{"num":35,"value":"·"},{"num":38,"value":"·"},{"num":40,"value":"·"},{"num":41,"value":"·"},{"num":42,"value":"·"},{"num":43,"value":"·"},{"num":44,"value":"·"},{"num":45,"value":"·"},{"num":52,"value":"·"},{"num":57,"value":"·"},{"num":60,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para14_text","desc":"","relativeXPath":"/div[1]/div[2]/div[1]/span[4]","allXPaths":["/div[1]/div[2]/div[1]/span[4]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":0,"value":"·"},{"num":4,"value":"·"},{"num":5,"value":"·"},{"num":6,"value":"·"},{"num":7,"value":"·"},{"num":8,"value":"·"},{"num":14,"value":"·"},{"num":17,"value":"·"},{"num":21,"value":"·"},{"num":24,"value":"·"},{"num":25,"value":"·"},{"num":28,"value":"·"},{"num":33,"value":"·"},{"num":34,"value":"·"},{"num":35,"value":"·"},{"num":38,"value":"·"},{"num":40,"value":"·"},{"num":41,"value":"·"},{"num":42,"value":"·"},{"num":43,"value":"·"},{"num":44,"value":"·"},{"num":45,"value":"·"},{"num":52,"value":"·"},{"num":57,"value":"·"},{"num":60,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para15_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/div[1]/a[1]","allXPaths":["/div[1]/div[2]/div[2]/div[1]/a[1]","//a[contains(., '5.0 out of')]"],"exampleValues":[{"num":0,"value":"5.0 out of 5 stars.10 product ratings - Apple iPhone 12 - 64GB - Blue (AT&T)"},{"num":2,"value":"4.5 out of 5 stars.41 product ratings - Apple iPhone SE 1st Gen. - 16/32/64/128GB - ALL COLORS Unlocked/AT&T/T-Mobile"},{"num":3,"value":"5.0 out of 5 stars.6 product ratings - Apple iPhone 8 Plus - 64/128/256GB - ALL COLORS Unlocked/T-Mobile A1864"},{"num":4,"value":"4.5 out of 5 stars.163 product ratings - Apple iPhone XS - 64GB - Space Gray (Unlocked) A1920 (CDMA + GSM)"},{"num":5,"value":"4.5 out of 5 stars.517 product ratings - 📱 IOS6 Apple iPhone 5 16GB Unlocked Black white gold blue Perfect appearance 📱"},{"num":6,"value":"4.5 out of 5 stars.241 product ratings - Apple iPhone 6 Plus - 64GB - Gold (Unlocked) A1524 (CDMA + GSM)"},{"num":7,"value":"4.0 out of 5 stars.3 product ratings - iPhone 12 Pro 128gb Unlocked Used Excellent"},{"num":8,"value":"5.0 out of 5 stars.42 product ratings - Apple iPhone 7 Plus 256GB Pink Unlocked A1661 CDMA GSM Working Smartphone"},{"num":12,"value":"4.5 out of 5 stars.135 product ratings - Apple iPhone XS ,XS Max Unlocked Various Colors 64GB 256GB 512GB Smartphone good"},{"num":14,"value":"4.5 out of 5 stars.130 product ratings - Apple iPhone SE 2nd Gen. - 64GB - Black (Unlocked) A2275 (CDMA + GSM)"},{"num":17,"value":"4.5 out of 5 stars.83 product ratings - Apple iPhone 11 Pro Max 256GB Space Gray Unlocked Excellent Condition"},{"num":18,"value":"4.5 out of 5 stars.489 product ratings - Apple IPhone 5S 16GB 32GB 64GB Space Gray Silver Gold UNlocked SIM Free Sealed"},{"num":20,"value":"4.5 out of 5 stars.14 product ratings - Apple iPhone SE 2020 (2nd Gen) Smartphone - Broken for Parts / Repairs!"},{"num":21,"value":"5.0 out of 5 stars.2 product ratings - Apple iPhone 11 Pro - 256GB - Silver (Unlocked) ~READ DESCRIPTION~"},{"num":22,"value":"5.0 out of 5 stars.4 product ratings - Apple iPhone 11 Pro A2215 256GB Factory Unlocked Single sim Very Good condition"},{"num":23,"value":"4.5 out of 5 stars.8 product ratings - Apple iPhone 11 Pro - 64GB - Space Grey (Unlocked) A2215 (CDMA + GSM)"},{"num":24,"value":"4.5 out of 5 stars.79 product ratings - Apple iPhone 3GS - 8GB - Black (AT&T) A1303 (GSM) Fast Ship Excellent Used"},{"num":25,"value":"4.5 out of 5 stars.250 product ratings - Apple iPhone 8 64GB Unlocked A1905 GSM - Space Gray"},{"num":27,"value":"4.5 out of 5 stars.122 product ratings - Apple iPhone 6s Unlocked Various Colors 16GB 32GB 64GB 128GB Smartphone Used"},{"num":28,"value":"4.5 out of 5 stars.175 product ratings - 🔥 Apple iPhone 6s 128GB - Space Gray (Unlocked) A1688/A1633 smartphone sealed"},{"num":29,"value":"4.5 out of 5 stars.5 product ratings - iPhone 7 32GB 128GB Black/Silver/Gold/Red Unlocked Verizon at&t Cricket Smart"},{"num":30,"value":"4.5 out of 5 stars.61 product ratings - Apple iPhone 11 - 64GB All Colors - Unlocked - A2111 (CDMA + GSM)"},{"num":31,"value":"5.0 out of 5 stars.1 product rating - Apple iPhone 11 128GB Factory Unlocked 4G LTE Smartphone - Good"},{"num":34,"value":"5.0 out of 5 stars.334 product ratings - Apple iPhone XR 64GB Black Unlocked Good Condition"},{"num":35,"value":"5.0 out of 5 stars.2 product ratings - Apple iPhone SE 2nd 64GB Xfinity"},{"num":36,"value":"4.5 out of 5 stars.151 product ratings - 📱 Apple iPhone 4S 8/16/32GB - Unlocked Black white Grade A+ Condition 📱 IOS6"},{"num":38,"value":"4.5 out of 5 stars.18 product ratings - Apple iPhone 6s Plus - Rose Gold (Sprint) A1687"},{"num":39,"value":"4.0 out of 5 stars.95 product ratings - Apple iPhone 6 Plus - 64GB - ALL COLORS (Unlocked) A1522 (CDMA + GSM)"},{"num":40,"value":"5.0 out of 5 stars.9 product ratings - Apple iPhone SE 2020 64GB Black AT&T Only Never Activated"},{"num":41,"value":"4.5 out of 5 stars.20 product ratings - Apple iPhone XS Max - 64 GB - Space Grey (Unlocked) A2101 (GSM) (AU Stock)"},{"num":42,"value":"4.5 out of 5 stars.22 product ratings - Apple iPhone 6s - 128GB - Silver (Unlocked) A1549 (CDMA + GSM)"},{"num":43,"value":"4.5 out of 5 stars.239 product ratings - Apple A1532 iPhone 5c 16GB (Verizon) White Smartphone (A4170)"},{"num":44,"value":"4.0 out of 5 stars.668 product ratings - iOS 2.0 Apple iPhone 3G 2nd Generation - 16GB - White (Unlocked) A1241 (GSM)"},{"num":46,"value":"4.0 out of 5 stars.2 product ratings - New&Sealed Apple iPhone 4-8GB 16GB 32GB-Black White UNlocked (AT&T) A1332 (GSM)"},{"num":47,"value":"5.0 out of 5 stars.1 product rating - 📱 Apple iPhone 4 8/16/32GB - Unlocked Used Full function mobile phone IOS7 📱"},{"num":48,"value":"5.0 out of 5 stars.5 product ratings - 📱 Apple iPhone 5s 16/32/64GB - Unlocked Black silver gold Grade A Condition 📱"},{"num":49,"value":"4.5 out of 5 stars.36 product ratings - Apple iPhone 4S 32GB IOS 6.1.3 Unlocked White Black Smart Phone"},{"num":51,"value":"4.5 out of 5 stars.243 product ratings - New&Sealed Apple iPhone 4 32GB A1332 Unlocked White/Black Smart Phone"},{"num":52,"value":"4.5 out of 5 stars.4 product ratings - Apple iPhone 11 64GB Smartphone Brand New Metro by T-Mobile"},{"num":54,"value":"4.5 out of 5 stars.39 product ratings - Apple iPhone 6S 16GB 32GB Various Colours Unlocked Smartphone Grade A Very Good"},{"num":55,"value":"4.5 out of 5 stars.99 product ratings - Original Unlocked Apple iPhone 4S -8/16/32/64GB Black White iOS 9 3G Smartphone"},{"num":56,"value":"3.5 out of 5 stars.5 product ratings - Apple iPhone 4S 64GB IOS 9.3.6 Unlocked White Black Smart Phone"},{"num":57,"value":"5.0 out of 5 stars.1 product rating - New Apple iPhone 14 Pro Max 128GB A2896 Dual Nano-SIM Unlocked - Deep Purple"},{"num":58,"value":"3.5 out of 5 stars.5 product ratings - Original Apple iPhone 4S 8/16/32GB - Unlocked Black white Grade A Condition IOS6"},{"num":60,"value":"4.5 out of 5 stars.258 product ratings - Apple iPhone 8 Plus - 64GB - Space Gray (Unlocked) A1897 (GSM) (VERY GOOD)"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para16_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/div[1]/a[1]","allXPaths":["/div[1]/div[2]/div[2]/div[1]/a[1]","//a[contains(., '5.0 out of')]"],"exampleValues":[{"num":0,"value":"https://www.ebay.com/p/18041714849?iid=204347640092#UserReviews"},{"num":2,"value":"https://www.ebay.com/p/235058061?iid=125654726090&var=426760724718#UserReviews"},{"num":3,"value":"https://www.ebay.com/p/16044554351?iid=125921528476&var=426871875647#UserReviews"},{"num":4,"value":"https://www.ebay.com/p/25023700375?iid=354499126227#UserReviews"},{"num":5,"value":"https://www.ebay.com/p/117394868?iid=165950326528#UserReviews"},{"num":6,"value":"https://www.ebay.com/p/203706854?iid=334883786743#UserReviews"},{"num":7,"value":"https://www.ebay.com/p/4050016431?iid=125946822312#UserReviews"},{"num":8,"value":"https://www.ebay.com/p/225076071?iid=374711273285#UserReviews"},{"num":12,"value":"https://www.ebay.com/p/6023706166?iid=144982418317&var=444193183263#UserReviews"},{"num":14,"value":"https://www.ebay.com/p/23037864010?iid=275481671524#UserReviews"},{"num":17,"value":"https://www.ebay.com/p/25034208609?iid=275816818931#UserReviews"},{"num":18,"value":"https://www.ebay.com/p/168494364?iid=402974377238&var=673170569100#UserReviews"},{"num":20,"value":"https://www.ebay.com/p/13039001065?iid=185690561222&var=693617555013#UserReviews"},{"num":21,"value":"https://www.ebay.com/p/16042424111?iid=404303235453#UserReviews"},{"num":22,"value":"https://www.ebay.com/p/19049315735?iid=164949098513&var=464484000902#UserReviews"},{"num":23,"value":"https://www.ebay.com/p/28034216926?iid=115809329987&rt=nc#UserReviews"},{"num":24,"value":"https://www.ebay.com/p/114805777?iid=155381097344#UserReviews"},{"num":25,"value":"https://www.ebay.com/p/239099257?iid=354806773691#UserReviews"},{"num":27,"value":"https://www.ebay.com/p/240455149?iid=134292112524&var=433745133508#UserReviews"},{"num":28,"value":"https://www.ebay.com/p/216202149?iid=266065363299#UserReviews"},{"num":29,"value":"https://www.ebay.com/p/24032598957?iid=115766777445&var=415833278482#UserReviews"},{"num":30,"value":"https://www.ebay.com/p/26034221296?iid=255807288830&var=555744825847#UserReviews"},{"num":31,"value":"https://www.ebay.com/p/9051376057?iid=115382464560&var=415431060998#UserReviews"},{"num":34,"value":"https://www.ebay.com/p/13023706562?iid=295672429475#UserReviews"},{"num":35,"value":"https://www.ebay.com/p/15054602795?iid=115791017894#UserReviews"},{"num":36,"value":"https://www.ebay.com/p/109338283?iid=266249818815&var=566092370942#UserReviews"},{"num":38,"value":"https://www.ebay.com/p/228576574?iid=374717197868#UserReviews"},{"num":39,"value":"https://www.ebay.com/p/240377092?iid=125804984552&var=426793050210#UserReviews"},{"num":40,"value":"https://www.ebay.com/p/3041485877?iid=265911650646#UserReviews"},{"num":41,"value":"https://www.ebay.com/p/25023700421?iid=225032084926&rt=nc#UserReviews"},{"num":42,"value":"https://www.ebay.com/p/240434004?iid=115813971678#UserReviews"},{"num":43,"value":"https://www.ebay.com/p/168534247?iid=394434823940#UserReviews"},{"num":44,"value":"https://www.ebay.com/p/99987131?iid=385598884410#UserReviews"},{"num":46,"value":"https://www.ebay.com/p/240210725?iid=385255115294&var=653141415433#UserReviews"},{"num":47,"value":"https://www.ebay.com/p/240282853?iid=314579175553&var=613122286182#UserReviews"},{"num":48,"value":"https://www.ebay.com/p/1981183096?iid=266246155894&var=566068110639#UserReviews"},{"num":49,"value":"https://www.ebay.com/p/109317046?iid=404172805708&var=674038350874#UserReviews"},{"num":51,"value":"https://www.ebay.com/p/103043220?iid=404172716323&var=674038083923#UserReviews"},{"num":52,"value":"https://www.ebay.com/p/7034636144?iid=234972583475#UserReviews"},{"num":54,"value":"https://www.ebay.com/p/15019024614?iid=364190042333&var=633650628664&rt=nc#UserReviews"},{"num":55,"value":"https://www.ebay.com/p/111218208?iid=185662256826&var=693566480468#UserReviews"},{"num":56,"value":"https://www.ebay.com/p/240060051?iid=404172810786&var=674038404885#UserReviews"},{"num":57,"value":"https://www.ebay.com/p/21056262184?iid=175636718714#UserReviews"},{"num":58,"value":"https://www.ebay.com/p/240200776?iid=166093060173&var=465601099337#UserReviews"},{"num":60,"value":"https://www.ebay.com/p/239080666?iid=402891685763#UserReviews"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para17_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[2]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '5.0 out of')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":0,"value":"5.0outof5stars."},{"num":2,"value":"4.5outof5stars."},{"num":3,"value":"5.0outof5stars."},{"num":4,"value":"4.5outof5stars."},{"num":5,"value":"4.5outof5stars."},{"num":6,"value":"4.5outof5stars."},{"num":7,"value":"4.0outof5stars."},{"num":8,"value":"5.0outof5stars."},{"num":12,"value":"4.5outof5stars."},{"num":14,"value":"4.5outof5stars."},{"num":17,"value":"4.5outof5stars."},{"num":18,"value":"4.5outof5stars."},{"num":20,"value":"4.5outof5stars."},{"num":21,"value":"5.0outof5stars."},{"num":22,"value":"5.0outof5stars."},{"num":23,"value":"4.5outof5stars."},{"num":24,"value":"4.5outof5stars."},{"num":25,"value":"4.5outof5stars."},{"num":27,"value":"4.5outof5stars."},{"num":28,"value":"4.5outof5stars."},{"num":29,"value":"4.5outof5stars."},{"num":30,"value":"4.5outof5stars."},{"num":31,"value":"5.0outof5stars."},{"num":34,"value":"5.0outof5stars."},{"num":35,"value":"5.0outof5stars."},{"num":36,"value":"4.5outof5stars."},{"num":38,"value":"4.5outof5stars."},{"num":39,"value":"4.0outof5stars."},{"num":40,"value":"5.0outof5stars."},{"num":41,"value":"4.5outof5stars."},{"num":42,"value":"4.5outof5stars."},{"num":43,"value":"4.5outof5stars."},{"num":44,"value":"4.0outof5stars."},{"num":46,"value":"4.0outof5stars."},{"num":47,"value":"5.0outof5stars."},{"num":48,"value":"5.0outof5stars."},{"num":49,"value":"4.5outof5stars."},{"num":51,"value":"4.5outof5stars."},{"num":52,"value":"4.5outof5stars."},{"num":54,"value":"4.5outof5stars."},{"num":55,"value":"4.5outof5stars."},{"num":56,"value":"3.5outof5stars."},{"num":57,"value":"5.0outof5stars."},{"num":58,"value":"3.5outof5stars."},{"num":60,"value":"4.5outof5stars."}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para18_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]","//span[contains(., '$285.00')]","//SPAN[@class='s-item__price']"],"exampleValues":[{"num":0,"value":"$285.00"},{"num":2,"value":"$54.99$94.99"},{"num":3,"value":"$149.99$184.99"},{"num":4,"value":"$224.99"},{"num":5,"value":"$69.00"},{"num":6,"value":"$1.00"},{"num":7,"value":"$550.00"},{"num":8,"value":"$99.99"},{"num":12,"value":"$233.99$439.99"},{"num":14,"value":"$169.99"},{"num":15,"value":""},{"num":17,"value":"$550.00"},{"num":18,"value":"$109.99$135.99"},{"num":20,"value":"$39.99"},{"num":21,"value":"$260.00"},{"num":22,"value":"$415.00"},{"num":23,"value":""},{"num":24,"value":"$42.88"},{"num":25,"value":"$60.00"},{"num":27,"value":"$79.80$104.99"},{"num":28,"value":"$159.99"},{"num":29,"value":"$99.00$139.00"},{"num":30,"value":"$299.99"},{"num":31,"value":"$212.00$385.00"},{"num":34,"value":"$209.99"},{"num":35,"value":"$99.00"},{"num":36,"value":"$24.00$37.00"},{"num":38,"value":"$60.00"},{"num":39,"value":"$83.99"},{"num":40,"value":"$170.00"},{"num":41,"value":""},{"num":42,"value":"$100.00"},{"num":43,"value":"$20.20"},{"num":44,"value":"$79.00"},{"num":46,"value":"$49.00$60.00"},{"num":47,"value":"$18.00$23.00"},{"num":48,"value":"$31.00$38.00"},{"num":49,"value":"$68.99"},{"num":51,"value":"$59.99"},{"num":52,"value":"$274.99"},{"num":54,"value":""},{"num":55,"value":"$49.00$69.00"},{"num":56,"value":"$79.99"},{"num":57,"value":"$1,353.00"},{"num":58,"value":"$24.00$29.00"},{"num":59,"value":""},{"num":60,"value":"$169.00"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para19_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[1]","//span[contains(., 'or Best Of')]","//SPAN[@class='s-item__dynamic s-item__purchaseOptionsWithIcon']"],"exampleValues":[{"num":0,"value":"orBestOffer"},{"num":2,"value":"BuyItNow"},{"num":3,"value":"BuyItNow"},{"num":4,"value":"BuyItNow"},{"num":5,"value":"BuyItNow"},{"num":6,"value":"2bids"},{"num":7,"value":"orBestOffer"},{"num":8,"value":"1bid"},{"num":12,"value":"BuyItNow"},{"num":14,"value":"BuyItNow"},{"num":17,"value":"BuyItNow"},{"num":18,"value":"BuyItNow"},{"num":20,"value":"BuyItNow"},{"num":21,"value":"0bids"},{"num":22,"value":"BuyItNow"},{"num":23,"value":"orBestOffer"},{"num":24,"value":"BuyItNow"},{"num":25,"value":"0bids"},{"num":27,"value":"BuyItNow"},{"num":28,"value":"BuyItNow"},{"num":29,"value":"BuyItNow"},{"num":30,"value":"BuyItNow"},{"num":31,"value":"BuyItNow"},{"num":34,"value":"BuyItNow"},{"num":35,"value":"orBestOffer"},{"num":36,"value":"BuyItNow"},{"num":38,"value":"BuyItNow"},{"num":39,"value":"BuyItNow"},{"num":40,"value":"BuyItNow"},{"num":41,"value":"BuyItNow"},{"num":42,"value":"orBestOffer"},{"num":43,"value":"Was:"},{"num":44,"value":"BuyItNow"},{"num":46,"value":"BuyItNow"},{"num":47,"value":"BuyItNow"},{"num":48,"value":"BuyItNow"},{"num":49,"value":"BuyItNow"},{"num":51,"value":"BuyItNow"},{"num":52,"value":"BuyItNow"},{"num":54,"value":"BuyItNow"},{"num":55,"value":"BuyItNow"},{"num":56,"value":"BuyItNow"},{"num":57,"value":"BuyItNow"},{"num":58,"value":"BuyItNow"},{"num":60,"value":"BuyItNow"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para20_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[2]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[2]/span[1]","//span[contains(., 'Shipping n')]","//SPAN[@class='s-item__shipping s-item__logisticsCost']"],"exampleValues":[{"num":0,"value":"Shippingnotspecified"},{"num":2,"value":"+$148.49shipping"},{"num":3,"value":"+$148.49shipping"},{"num":4,"value":"Shippingnotspecified"},{"num":5,"value":"+$7.00shipping"},{"num":6,"value":"+$17.00shipping"},{"num":7,"value":"+$28.05shipping"},{"num":8,"value":"$160.00"},{"num":12,"value":"FreeInternationalShipping"},{"num":14,"value":"Shippingnotspecified"},{"num":17,"value":"+$28.05shipping"},{"num":18,"value":"FreeInternationalShipping"},{"num":20,"value":"+$23.56shipping"},{"num":21,"value":"$338.00"},{"num":22,"value":"FreeInternationalShipping"},{"num":23,"value":""},{"num":24,"value":"+$17.50shipping"},{"num":25,"value":"$140.00"},{"num":27,"value":"FreeInternationalShipping"},{"num":28,"value":"+$1.00shipping"},{"num":29,"value":"Shippingnotspecified"},{"num":30,"value":"Shippingnotspecified"},{"num":31,"value":"Shippingnotspecified"},{"num":34,"value":"+$33.31shipping"},{"num":35,"value":"+$36.15shipping"},{"num":36,"value":"+$7.00shipping"},{"num":38,"value":"+$28.05shipping"},{"num":39,"value":"+$130.50shipping"},{"num":40,"value":"+$78.60shipping"},{"num":41,"value":""},{"num":42,"value":"+$10.00shipping"},{"num":43,"value":"BuyItNow"},{"num":44,"value":"+$4.99shipping"},{"num":46,"value":"FreeInternationalShipping"},{"num":47,"value":"+$7.00shipping"},{"num":48,"value":"+$7.50shipping"},{"num":49,"value":"FreeInternationalShipping"},{"num":51,"value":"FreeInternationalShipping"},{"num":52,"value":"+$23.00shipping"},{"num":54,"value":""},{"num":55,"value":"+$7.00shipping"},{"num":56,"value":"FreeInternationalShipping"},{"num":57,"value":"FreeInternationalShipping"},{"num":58,"value":"+$7.00shipping"},{"num":60,"value":"Shippingnotspecified"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para21_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[3]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[3]/span[1]","//span[contains(., 'from Unite')]","//SPAN[@class='s-item__location s-item__itemLocation']"],"exampleValues":[{"num":0,"value":"fromUnitedStates"},{"num":2,"value":"fromUnitedStates"},{"num":3,"value":"fromUnitedStates"},{"num":4,"value":"fromUnitedStates"},{"num":5,"value":"fromChina"},{"num":6,"value":"fromIsrael"},{"num":7,"value":"fromUnitedStates"},{"num":8,"value":"BuyItNow"},{"num":12,"value":"fromJapan"},{"num":14,"value":"fromUnitedStates"},{"num":17,"value":"fromUnitedStates"},{"num":18,"value":"fromChina"},{"num":20,"value":"fromUnitedStates"},{"num":21,"value":"BuyItNow"},{"num":22,"value":"fromKorea,South"},{"num":23,"value":""},{"num":24,"value":"fromUnitedStates"},{"num":25,"value":"BuyItNow"},{"num":27,"value":"fromJapan"},{"num":28,"value":"fromChina"},{"num":29,"value":"fromUnitedStates"},{"num":30,"value":"fromUnitedStates"},{"num":31,"value":"fromUnitedStates"},{"num":34,"value":"fromUnitedStates"},{"num":35,"value":"fromUnitedStates"},{"num":36,"value":"fromChina"},{"num":38,"value":"fromUnitedStates"},{"num":39,"value":"fromUnitedStates"},{"num":40,"value":"fromUnitedStates"},{"num":41,"value":""},{"num":42,"value":"fromPortugal"},{"num":43,"value":"+$75.70shipping"},{"num":44,"value":"fromChina"},{"num":46,"value":"fromChina"},{"num":47,"value":"fromChina"},{"num":48,"value":"fromChina"},{"num":49,"value":"fromChina"},{"num":51,"value":"fromChina"},{"num":52,"value":"fromUnitedStates"},{"num":54,"value":""},{"num":55,"value":"fromChina"},{"num":56,"value":"fromChina"},{"num":57,"value":"fromHongKong"},{"num":58,"value":"fromChina"},{"num":60,"value":"fromUnitedStates"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para22_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":0,"value":"​"},{"num":3,"value":"​"},{"num":5,"value":"​"},{"num":6,"value":"​"},{"num":7,"value":"​"},{"num":18,"value":"​"},{"num":20,"value":"​"},{"num":23,"value":"​"},{"num":28,"value":"​"},{"num":29,"value":"​"},{"num":31,"value":"​"},{"num":35,"value":"​"},{"num":36,"value":"​"},{"num":38,"value":"​"},{"num":40,"value":"​"},{"num":42,"value":"​"},{"num":48,"value":"​"},{"num":54,"value":"​"},{"num":58,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para23_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":0,"value":"Sponsored"},{"num":3,"value":"Sponsored"},{"num":5,"value":"Sponsored"},{"num":6,"value":"Sponsored"},{"num":7,"value":"Sponsored"},{"num":18,"value":"Sponsored"},{"num":20,"value":"Sponsored"},{"num":23,"value":"Sponsored"},{"num":28,"value":"Sponsored"},{"num":29,"value":"Sponsored"},{"num":31,"value":"Sponsored"},{"num":35,"value":"Sponsored"},{"num":36,"value":"Sponsored"},{"num":38,"value":"Sponsored"},{"num":40,"value":"Sponsored"},{"num":42,"value":"Sponsored"},{"num":48,"value":"Sponsored"},{"num":54,"value":"Sponsored"},{"num":58,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para24_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/h2[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/h2[1]","//h2[contains(., 'Model')]","//H2[@class='srp-carousel-list__item-group-title']"],"exampleValues":[{"num":1,"value":"Model"},{"num":61,"value":"ShopbyModel"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para25_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone X - apply Model filter"},{"num":61,"value":"Apple iPhone X - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para26_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520X&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520X&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para27_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhoneX"},{"num":61,"value":"AppleiPhoneX"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para28_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[1]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para29_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone 8 Plus - apply Model filter"},{"num":61,"value":"Apple iPhone 8 Plus - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para30_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208%2520Plus&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208%2520Plus&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para31_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhone8Plus"},{"num":61,"value":"AppleiPhone8Plus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para32_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para33_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone 8 - apply Model filter"},{"num":61,"value":"Apple iPhone 8 - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para34_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%25208&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para35_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhone8"},{"num":61,"value":"AppleiPhone8"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para36_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[3]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para37_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone 11 - apply Model filter"},{"num":61,"value":"Apple iPhone 11 - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para38_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252011&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252011&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para39_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhone11"},{"num":61,"value":"AppleiPhone11"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para40_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[4]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para41_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone 12 - apply Model filter"},{"num":61,"value":"Apple iPhone 12 - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para42_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252012&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252012&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para43_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhone12"},{"num":61,"value":"AppleiPhone12"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para44_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[5]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para45_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated']"],"exampleValues":[{"num":1,"value":"Apple iPhone 13 Pro Max - apply Model filter"},{"num":61,"value":"Apple iPhone 13 Pro Max - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para46_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252013%2520Pro%2520Max&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%252013%2520Pro%2520Max&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para47_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhone13ProMax"},{"num":61,"value":"AppleiPhone13ProMax"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para48_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[6]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para49_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"Apple iPhone XR - apply Model filter"},{"num":61,"value":"Apple iPhone XR - apply Shop by Model filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para50_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]","//a[contains(., 'Apple iPho')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520XR&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Model=Apple%2520iPhone%2520XR&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para51_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]/div[1]","//div[contains(., 'Apple iPho')]"],"exampleValues":[{"num":1,"value":"AppleiPhoneXR"},{"num":61,"value":"AppleiPhoneXR"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para52_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[7]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply M')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyModelfilter"},{"num":61,"value":"-applyShopbyModelfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para53_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/h2[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/h2[1]","//h2[contains(., 'Storage Ca')]","//H2[@class='srp-carousel-list__item-group-title']"],"exampleValues":[{"num":1,"value":"StorageCapacity"},{"num":61,"value":"ShopbyStorageCapacity"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para54_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]","//a[contains(., '128 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"128 GB - apply Storage Capacity filter"},{"num":61,"value":"128 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para55_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]","//a[contains(., '128 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=128%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=128%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para56_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]/div[1]","//div[contains(., '128 GB - a')]"],"exampleValues":[{"num":1,"value":"128GB"},{"num":61,"value":"128GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para57_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[8]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para58_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]","//a[contains(., '256 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"256 GB - apply Storage Capacity filter"},{"num":61,"value":"256 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para59_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]","//a[contains(., '256 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=256%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=256%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para60_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]/div[1]","//div[contains(., '256 GB - a')]"],"exampleValues":[{"num":1,"value":"256GB"},{"num":61,"value":"256GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para61_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[9]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para62_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]","//a[contains(., '64 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"64 GB - apply Storage Capacity filter"},{"num":61,"value":"64 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para63_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]","//a[contains(., '64 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=64%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=64%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para64_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]/div[1]","//div[contains(., '64 GB - ap')]"],"exampleValues":[{"num":1,"value":"64GB"},{"num":61,"value":"64GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para65_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[10]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para66_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]","//a[contains(., '512 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"512 GB - apply Storage Capacity filter"},{"num":61,"value":"512 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para67_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]","//a[contains(., '512 GB - a')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=512%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=512%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para68_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]/div[1]","//div[contains(., '512 GB - a')]"],"exampleValues":[{"num":1,"value":"512GB"},{"num":61,"value":"512GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para69_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[11]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para70_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]","//a[contains(., '1 TB - app')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"1 TB - apply Storage Capacity filter"},{"num":61,"value":"1 TB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para71_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]","//a[contains(., '1 TB - app')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=1%2520TB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=1%2520TB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para72_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]/div[1]","//div[contains(., '1 TB - app')]"],"exampleValues":[{"num":1,"value":"1TB"},{"num":61,"value":"1TB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para73_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[12]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para74_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]","//a[contains(., '32 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"32 GB - apply Storage Capacity filter"},{"num":61,"value":"32 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para75_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]","//a[contains(., '32 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=32%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=32%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para76_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]/div[1]","//div[contains(., '32 GB - ap')]"],"exampleValues":[{"num":1,"value":"32GB"},{"num":61,"value":"32GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para77_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[13]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para78_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]","//a[contains(., '16 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"16 GB - apply Storage Capacity filter"},{"num":61,"value":"16 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para79_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]","//a[contains(., '16 GB - ap')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=16%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=16%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para80_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]/div[1]","//div[contains(., '16 GB - ap')]"],"exampleValues":[{"num":1,"value":"16GB"},{"num":61,"value":"16GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para81_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[14]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para82_link_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]","//a[contains(., '8 GB - app')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"8 GB - apply Storage Capacity filter"},{"num":61,"value":"8 GB - apply Shop by Storage Capacity filter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para83_link_address","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]","//a[contains(., '8 GB - app')]","//A[@class='srp-carousel-list__item-link--truncated-small-item']"],"exampleValues":[{"num":1,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=8%2520GB&_dcat=9355"},{"num":61,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&Storage%2520Capacity=8%2520GB&_dcat=9355"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para84_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]/div[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]/div[1]","//div[contains(., '8 GB - app')]"],"exampleValues":[{"num":1,"value":"8GB"},{"num":61,"value":"8GB"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para85_text","desc":"","relativeXPath":"/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[15]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '- apply S')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":1,"value":"-applyStorageCapacityfilter"},{"num":61,"value":"-applyShopbyStorageCapacityfilter"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para86_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]","//span[contains(., 'to')]","//SPAN[@class='DEFAULT']"],"exampleValues":[{"num":2,"value":"to"},{"num":3,"value":"to"},{"num":12,"value":"to"},{"num":15,"value":""},{"num":18,"value":"to"},{"num":23,"value":"$326.88"},{"num":27,"value":"to"},{"num":29,"value":"to"},{"num":31,"value":"to"},{"num":36,"value":"to"},{"num":41,"value":"$293.53"},{"num":46,"value":"to"},{"num":47,"value":"to"},{"num":48,"value":"to"},{"num":54,"value":"$74.18"},{"num":55,"value":"to"},{"num":58,"value":"to"},{"num":59,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para87_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[4]/span[1]/span[1]","//span[contains(., '14+ watche')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":2,"value":"14+watchers"},{"num":3,"value":""},{"num":4,"value":"49sold"},{"num":5,"value":""},{"num":6,"value":""},{"num":7,"value":""},{"num":14,"value":"63sold"},{"num":17,"value":"28watchers"},{"num":18,"value":""},{"num":20,"value":""},{"num":22,"value":"24+watchers"},{"num":23,"value":""},{"num":24,"value":"5watchers"},{"num":28,"value":""},{"num":29,"value":""},{"num":30,"value":""},{"num":31,"value":""},{"num":34,"value":""},{"num":35,"value":""},{"num":36,"value":""},{"num":38,"value":""},{"num":39,"value":"6+watchers"},{"num":40,"value":""},{"num":41,"value":"Lastone"},{"num":42,"value":""},{"num":47,"value":"2+watchers"},{"num":48,"value":""},{"num":51,"value":"21+watchers"},{"num":52,"value":"12watchers"},{"num":54,"value":""},{"num":57,"value":"Lastone"},{"num":58,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para88_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":2,"value":"​"},{"num":4,"value":"​"},{"num":12,"value":"​"},{"num":14,"value":"​"},{"num":17,"value":"​"},{"num":22,"value":"​"},{"num":24,"value":"​"},{"num":34,"value":"​"},{"num":39,"value":"​"},{"num":46,"value":"​"},{"num":47,"value":"​"},{"num":49,"value":"​"},{"num":51,"value":"​"},{"num":52,"value":"​"},{"num":56,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para89_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":2,"value":"Sponsored"},{"num":4,"value":"Sponsored"},{"num":12,"value":"Sponsored"},{"num":14,"value":"Sponsored"},{"num":17,"value":"Sponsored"},{"num":22,"value":"Sponsored"},{"num":24,"value":"Sponsored"},{"num":34,"value":"Sponsored"},{"num":39,"value":"Sponsored"},{"num":46,"value":"Sponsored"},{"num":47,"value":"Sponsored"},{"num":49,"value":"Sponsored"},{"num":51,"value":"Sponsored"},{"num":52,"value":"Sponsored"},{"num":56,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para90_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","//b[contains(., 'Top Rated')]"],"exampleValues":[{"num":4,"value":"TopRatedPlus"},{"num":14,"value":"TopRatedPlus"},{"num":29,"value":"TopRatedPlus"},{"num":31,"value":"TopRatedPlus"},{"num":34,"value":"TopRatedPlus"},{"num":40,"value":"TopRatedPlus"},{"num":60,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para91_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","//li[contains(., 'Sellers wi')]"],"exampleValues":[{"num":4,"value":"Sellerswithhighestbuyerratings"},{"num":14,"value":"Sellerswithhighestbuyerratings"},{"num":29,"value":"Sellerswithhighestbuyerratings"},{"num":31,"value":"Sellerswithhighestbuyerratings"},{"num":34,"value":"Sellerswithhighestbuyerratings"},{"num":40,"value":"Sellerswithhighestbuyerratings"},{"num":60,"value":"Sellerswithhighestbuyerratings"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para92_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","//li[contains(., 'Returns, m')]"],"exampleValues":[{"num":4,"value":"Returns,moneyback"},{"num":14,"value":"Returns,moneyback"},{"num":29,"value":"Returns,moneyback"},{"num":31,"value":"Returns,moneyback"},{"num":34,"value":"Returns,moneyback"},{"num":40,"value":"Returns,moneyback"},{"num":60,"value":"Returns,moneyback"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para93_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","//li[contains(., 'Ships in a')]"],"exampleValues":[{"num":4,"value":"Shipsinabusinessdaywithtracking"},{"num":14,"value":"Shipsinabusinessdaywithtracking"},{"num":29,"value":"Shipsinabusinessdaywithtracking"},{"num":31,"value":"Shipsinabusinessdaywithtracking"},{"num":34,"value":"Shipsinabusinessdaywithtracking"},{"num":40,"value":"Shipsinabusinessdaywithtracking"},{"num":60,"value":"Shipsinabusinessdaywithtracking"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para94_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":4,"value":"Learn More"},{"num":14,"value":"Learn More"},{"num":29,"value":"Learn More"},{"num":31,"value":"Learn More"},{"num":34,"value":"Learn More"},{"num":40,"value":"Learn More"},{"num":60,"value":"Learn More"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para95_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":4,"value":"http://pages.ebay.com/trp/index.html"},{"num":14,"value":"http://pages.ebay.com/trp/index.html"},{"num":29,"value":"http://pages.ebay.com/trp/index.html"},{"num":31,"value":"http://pages.ebay.com/trp/index.html"},{"num":34,"value":"http://pages.ebay.com/trp/index.html"},{"num":40,"value":"http://pages.ebay.com/trp/index.html"},{"num":60,"value":"http://pages.ebay.com/trp/index.html"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para96_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]/span[2]","//span[contains(., 'Top Rated')]","//SPAN[@class='s-item__etrs-text']"],"exampleValues":[{"num":4,"value":"TopRatedPlus"},{"num":14,"value":"TopRatedPlus"},{"num":29,"value":"TopRatedPlus"},{"num":31,"value":"TopRatedPlus"},{"num":34,"value":"TopRatedPlus"},{"num":40,"value":"TopRatedPlus"},{"num":60,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para97_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[1]/span[1]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":6,"value":"·"},{"num":8,"value":"·"},{"num":21,"value":"·"},{"num":25,"value":"·"},{"num":43,"value":"PreviousPrice"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para98_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[2]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[2]/span[1]","//span[contains(., 'Time left')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":6,"value":"Timeleft"},{"num":8,"value":"Timeleft"},{"num":21,"value":"Timeleft"},{"num":25,"value":"Timeleft"},{"num":43,"value":"12%off"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para99_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[2]/span[2]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[2]/span[2]","//span[contains(., '7d 23h lef')]","//SPAN[@class='s-item__time-left']"],"exampleValues":[{"num":6,"value":"7d23hleft"},{"num":8,"value":"3d20hleft"},{"num":21,"value":"5d22hleft"},{"num":25,"value":"6d14hleft"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para100_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[2]/span[3]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[2]/span[3]","//span[contains(., '(06/02, 05')]","//SPAN[@class='s-item__time-end']"],"exampleValues":[{"num":6,"value":"(06/02,05:14PM)"},{"num":8,"value":"(Mon,02:12PM)"},{"num":21,"value":"(Wed,04:06PM)"},{"num":25,"value":"(Thu,07:53AM)"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para101_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[4]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[4]/span[1]","//span[contains(., 'Free Inter')]","//SPAN[@class='s-item__shipping s-item__logisticsCost']"],"exampleValues":[{"num":8,"value":"FreeInternationalShipping"},{"num":12,"value":"Freereturns"},{"num":14,"value":""},{"num":17,"value":""},{"num":18,"value":""},{"num":20,"value":""},{"num":21,"value":"+$25.00shipping"},{"num":22,"value":""},{"num":23,"value":""},{"num":24,"value":""},{"num":25,"value":"+$28.05shipping"},{"num":27,"value":"Freereturns"},{"num":28,"value":""},{"num":29,"value":""},{"num":30,"value":""},{"num":31,"value":""},{"num":34,"value":""},{"num":35,"value":""},{"num":36,"value":""},{"num":38,"value":""},{"num":39,"value":""},{"num":40,"value":""},{"num":41,"value":""},{"num":42,"value":""},{"num":43,"value":"fromUnitedStates"},{"num":44,"value":"Freereturns"},{"num":46,"value":"Freereturns"},{"num":47,"value":""},{"num":48,"value":""},{"num":49,"value":"Freereturns"},{"num":51,"value":""},{"num":52,"value":""},{"num":54,"value":""},{"num":55,"value":"Freereturns"},{"num":56,"value":"Freereturns"},{"num":57,"value":""},{"num":58,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para102_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[5]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[5]/span[1]","//span[contains(., 'from Israe')]","//SPAN[@class='s-item__location s-item__itemLocation']"],"exampleValues":[{"num":8,"value":"fromIsrael"},{"num":12,"value":""},{"num":14,"value":""},{"num":17,"value":""},{"num":21,"value":"fromRomania"},{"num":22,"value":""},{"num":24,"value":""},{"num":25,"value":"fromUnitedStates"},{"num":27,"value":""},{"num":30,"value":""},{"num":34,"value":""},{"num":39,"value":""},{"num":41,"value":""},{"num":43,"value":""},{"num":44,"value":""},{"num":46,"value":""},{"num":47,"value":""},{"num":49,"value":""},{"num":51,"value":""},{"num":52,"value":""},{"num":55,"value":""},{"num":56,"value":""},{"num":57,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para103_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":8,"value":"​"},{"num":21,"value":"​"},{"num":25,"value":"​"},{"num":27,"value":"​"},{"num":30,"value":"​"},{"num":41,"value":"​"},{"num":43,"value":"​"},{"num":55,"value":"​"},{"num":57,"value":"​"},{"num":60,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para104_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":8,"value":"Sponsored"},{"num":21,"value":"Sponsored"},{"num":25,"value":"Sponsored"},{"num":27,"value":"Sponsored"},{"num":30,"value":"Sponsored"},{"num":41,"value":"Sponsored"},{"num":43,"value":"Sponsored"},{"num":55,"value":"Sponsored"},{"num":57,"value":"Sponsored"},{"num":60,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para105_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[2]/span[1]/span[1]","//span[contains(., '$98.06')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":9,"value":"$98.06"},{"num":10,"value":"to"},{"num":11,"value":"$40.48"},{"num":13,"value":"$7.41"},{"num":15,"value":"to"},{"num":19,"value":"$281.05"},{"num":37,"value":"$4.93"},{"num":50,"value":"$7.41"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para106_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[1]","//span[contains(., 'or Best Of')]","//SPAN[@class='s-item__dynamic s-item__purchaseOptionsWithIcon']"],"exampleValues":[{"num":9,"value":"orBestOffer"},{"num":10,"value":"BuyItNow"},{"num":11,"value":"0bids"},{"num":13,"value":"BuyItNow"},{"num":15,"value":"BuyItNow"},{"num":19,"value":"BuyItNow"},{"num":26,"value":"BuyItNow"},{"num":33,"value":"BuyItNow"},{"num":37,"value":"BuyItNow"},{"num":45,"value":"orBestOffer"},{"num":50,"value":"BuyItNow"},{"num":53,"value":"Was:"},{"num":59,"value":"BuyItNow"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para107_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[2]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[2]/span[1]/span[1]","//span[contains(., '+$19.61 sh')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":9,"value":"+$19.61shipping"},{"num":11,"value":"$110.39"},{"num":13,"value":"+$6.18shipping"},{"num":19,"value":"+$25.43shipping"},{"num":37,"value":"+$6.18shipping"},{"num":50,"value":"+$6.18shipping"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para108_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[3]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[3]/span[1]/span[1]","//span[contains(., 'from Austr')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":9,"value":"fromAustralia"},{"num":13,"value":"fromUnitedKingdom"},{"num":19,"value":"fromAustralia"},{"num":37,"value":"fromUnitedKingdom"},{"num":50,"value":"fromUnitedKingdom"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para109_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]","//span[contains(., '17 watcher')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":9,"value":"17watchers"},{"num":10,"value":""},{"num":11,"value":"+$11.75shipping"},{"num":13,"value":""},{"num":15,"value":""},{"num":19,"value":""},{"num":26,"value":""},{"num":33,"value":"31sold"},{"num":37,"value":""},{"num":45,"value":""},{"num":50,"value":""},{"num":59,"value":"551+sold"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para110_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":9,"value":"​"},{"num":33,"value":"​"},{"num":53,"value":"​"},{"num":59,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para111_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":9,"value":"Sponsored"},{"num":33,"value":"Sponsored"},{"num":53,"value":"Sponsored"},{"num":59,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para112_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[1]","allXPaths":["/div[1]/div[2]/div[2]/span[1]","//span[contains(., '$39.00 to')]","//SPAN[@class='s-item__price']"],"exampleValues":[{"num":10,"value":"$39.00$89.00"},{"num":11,"value":""},{"num":13,"value":""},{"num":15,"value":"$187.00$282.00"},{"num":16,"value":"Excellent-Refurbished"},{"num":19,"value":""},{"num":26,"value":"$8.50"},{"num":32,"value":"OpenBox"},{"num":33,"value":"$29.45"},{"num":37,"value":""},{"num":45,"value":"$650.00"},{"num":50,"value":""},{"num":53,"value":"$4.31"},{"num":59,"value":"$249.99"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para113_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[2]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[2]/span[1]","//span[contains(., 'Free Inter')]","//SPAN[@class='s-item__shipping s-item__logisticsCost']"],"exampleValues":[{"num":10,"value":"FreeInternationalShipping"},{"num":11,"value":""},{"num":13,"value":""},{"num":15,"value":"Shippingnotspecified"},{"num":19,"value":""},{"num":26,"value":"+$0.01shipping"},{"num":33,"value":"+$20.30shipping"},{"num":37,"value":""},{"num":45,"value":"+$28.05shipping"},{"num":50,"value":""},{"num":53,"value":"BuyItNow"},{"num":59,"value":"Shippingnotspecified"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para114_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[3]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[3]/span[1]","//span[contains(., 'from Sri L')]","//SPAN[@class='s-item__location s-item__itemLocation']"],"exampleValues":[{"num":10,"value":"fromSriLanka"},{"num":11,"value":"BuyItNow"},{"num":13,"value":""},{"num":15,"value":"fromUnitedStates"},{"num":19,"value":""},{"num":26,"value":"fromMaldives"},{"num":33,"value":"fromUnitedStates"},{"num":37,"value":""},{"num":45,"value":"fromUnitedStates"},{"num":50,"value":""},{"num":53,"value":"FreeInternationalShipping"},{"num":59,"value":"fromUnitedStates"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para115_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":10,"value":"​"},{"num":13,"value":"​"},{"num":15,"value":"​"},{"num":19,"value":"​"},{"num":26,"value":"​"},{"num":37,"value":"​"},{"num":45,"value":"​"},{"num":50,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para116_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[4]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":10,"value":"Sponsored"},{"num":13,"value":"Sponsored"},{"num":15,"value":"Sponsored"},{"num":19,"value":"Sponsored"},{"num":26,"value":"Sponsored"},{"num":37,"value":"Sponsored"},{"num":45,"value":"Sponsored"},{"num":50,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para117_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[1]/span[1]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":11,"value":"·"},{"num":53,"value":"PreviousPrice"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para118_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[2]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[2]/span[1]","//span[contains(., 'Time left')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":11,"value":"Timeleft"},{"num":53,"value":"9%off"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para119_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[2]/span[2]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[2]/span[2]","//span[contains(., '6d 12h lef')]","//SPAN[@class='s-item__time-left']"],"exampleValues":[{"num":11,"value":"6d12hleft"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para120_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[2]/span[3]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[2]/span[3]","//span[contains(., '(Thu, 05:5')]","//SPAN[@class='s-item__time-end']"],"exampleValues":[{"num":11,"value":"(Thu,05:51AM)"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para121_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[5]/span[1]/span[1]","//span[contains(., 'from Canad')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":11,"value":"fromCanada"},{"num":33,"value":""},{"num":53,"value":""},{"num":59,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para122_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[6]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[6]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":11,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para123_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[6]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[6]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":11,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para124_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","//b[contains(., 'Top Rated')]"],"exampleValues":[{"num":15,"value":"TopRatedPlus"},{"num":59,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para125_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","//li[contains(., 'Sellers wi')]"],"exampleValues":[{"num":15,"value":"Sellerswithhighestbuyerratings"},{"num":59,"value":"Sellerswithhighestbuyerratings"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para126_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","//li[contains(., 'Returns, m')]"],"exampleValues":[{"num":15,"value":"Returns,moneyback"},{"num":59,"value":"Returns,moneyback"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para127_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","//li[contains(., 'Ships in a')]"],"exampleValues":[{"num":15,"value":"Shipsinabusinessdaywithtracking"},{"num":59,"value":"Shipsinabusinessdaywithtracking"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para128_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":15,"value":"Learn More"},{"num":59,"value":"Learn More"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para129_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":15,"value":"http://pages.ebay.com/trp/index.html"},{"num":59,"value":"http://pages.ebay.com/trp/index.html"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para130_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[1]/span[2]","//span[contains(., 'Top Rated')]","//SPAN[@class='s-item__etrs-text']"],"exampleValues":[{"num":15,"value":"TopRatedPlus"},{"num":59,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para131_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/a[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/a[1]","//a[contains(., '5.0 out of')]"],"exampleValues":[{"num":16,"value":"5.0 out of 5 stars.1 product rating - Apple iPhone 13 mini - (Unlocked) - 128GB - 256GB - 512GB - Excellent"},{"num":32,"value":"5.0 out of 5 stars.13 product ratings - NEW APPLE IPHONE SE 2ND GEN 64GB WHITE (CRICKET WIRELESS) A2275 (CDMA + GSM)"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para132_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/a[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/a[1]","//a[contains(., '5.0 out of')]"],"exampleValues":[{"num":16,"value":"https://www.ebay.com/p/4049279846?iid=364259821916&var=633771011461#UserReviews"},{"num":32,"value":"https://www.ebay.com/p/28038172042?iid=145095967799#UserReviews"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para133_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/a[1]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/a[1]/div[1]/span[1]","//span[contains(., '5.0 out of')]","//SPAN[@class='clipped']"],"exampleValues":[{"num":16,"value":"5.0outof5stars."},{"num":32,"value":"5.0outof5stars."}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para134_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]","//span[contains(., '$499.00 to')]","//SPAN[@class='s-item__price']"],"exampleValues":[{"num":16,"value":"$499.00$619.00"},{"num":20,"value":""},{"num":29,"value":""},{"num":30,"value":""},{"num":31,"value":""},{"num":32,"value":"$149.99"},{"num":34,"value":""},{"num":40,"value":""},{"num":54,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para135_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/span[1]","//span[contains(., 'to')]","//SPAN[@class='DEFAULT']"],"exampleValues":[{"num":16,"value":"to"},{"num":29,"value":""},{"num":31,"value":""},{"num":34,"value":""},{"num":40,"value":""},{"num":54,"value":"Customsservicesandinternationaltrackingprovided"},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para136_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[1]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[1]/span[1]","//span[contains(., 'Buy It Now')]","//SPAN[@class='s-item__dynamic s-item__purchaseOptionsWithIcon']"],"exampleValues":[{"num":16,"value":"BuyItNow"},{"num":32,"value":"BuyItNow"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para137_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","//b[contains(., 'Top Rated')]"],"exampleValues":[{"num":16,"value":"TopRatedPlus"},{"num":32,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para138_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","//li[contains(., 'Sellers wi')]"],"exampleValues":[{"num":16,"value":"Sellerswithhighestbuyerratings"},{"num":32,"value":"Sellerswithhighestbuyerratings"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para139_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","//li[contains(., 'Returns, m')]"],"exampleValues":[{"num":16,"value":"Returns,moneyback"},{"num":32,"value":"Returns,moneyback"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para140_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","//li[contains(., 'Ships in a')]"],"exampleValues":[{"num":16,"value":"Shipsinabusinessdaywithtracking"},{"num":32,"value":"Shipsinabusinessdaywithtracking"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para141_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":16,"value":"Learn More"},{"num":32,"value":"Learn More"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para142_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":16,"value":"http://pages.ebay.com/trp/index.html"},{"num":32,"value":"http://pages.ebay.com/trp/index.html"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para143_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/span[1]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[5]/span[1]/span[1]/span[2]","//span[contains(., 'Top Rated')]","//SPAN[@class='s-item__etrs-text']"],"exampleValues":[{"num":16,"value":"TopRatedPlus"},{"num":32,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para144_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[2]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[2]/span[1]","//span[contains(., 'Shipping n')]","//SPAN[@class='s-item__shipping s-item__logisticsCost']"],"exampleValues":[{"num":16,"value":"Shippingnotspecified"},{"num":32,"value":"Shippingnotspecified"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para145_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[3]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[3]/span[1]","//span[contains(., 'from Unite')]","//SPAN[@class='s-item__location s-item__itemLocation']"],"exampleValues":[{"num":16,"value":"fromUnitedStates"},{"num":32,"value":"fromUnitedStates"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para146_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[4]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[5]/div[4]/span[1]/span[2]","//span[contains(., 'eBay Refur')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":16,"value":"eBayRefurbished"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para147_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[5]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[5]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":16,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para148_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[5]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[5]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":16,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para149_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[2]/span[1]/span[2]","//span[contains(., 'to')]","//SPAN[@class='DEFAULT ITALIC']"],"exampleValues":[{"num":19,"value":"to"},{"num":37,"value":"to"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para150_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[1]/span[3]","allXPaths":["/div[1]/div[2]/div[2]/span[1]/span[3]","//span[contains(., '$313.73')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":19,"value":"$313.73"},{"num":37,"value":"$7.41"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para151_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[1]/div[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/span[1]/div[1]/span[1]/span[1]","//span[contains(., 'Save up to')]","//SPAN[@class='NEGATIVE BOLD']"],"exampleValues":[{"num":20,"value":"Saveupto10%whenyoubuymore"},{"num":30,"value":"Saveupto10%whenyoubuymore"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para152_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/b[1]","//b[contains(., 'Top Rated')]"],"exampleValues":[{"num":20,"value":"TopRatedPlus"},{"num":30,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para153_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[1]","//li[contains(., 'Sellers wi')]"],"exampleValues":[{"num":20,"value":"Sellerswithhighestbuyerratings"},{"num":30,"value":"Sellerswithhighestbuyerratings"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para154_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[2]","//li[contains(., 'Returns, m')]"],"exampleValues":[{"num":20,"value":"Returns,moneyback"},{"num":30,"value":"Returns,moneyback"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para155_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/ul[1]/li[3]","//li[contains(., 'Ships in a')]"],"exampleValues":[{"num":20,"value":"Shipsinabusinessdaywithtracking"},{"num":30,"value":"Shipsinabusinessdaywithtracking"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para156_link_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":20,"value":"Learn More"},{"num":30,"value":"Learn More"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para157_link_address","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[1]/span[1]/span[1]/span[2]/span[2]/span[1]/span[1]/a[1]","//a[contains(., 'Learn More')]"],"exampleValues":[{"num":20,"value":"http://pages.ebay.com/trp/index.html"},{"num":30,"value":"http://pages.ebay.com/trp/index.html"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para158_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/span[2]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[4]/span[2]/span[1]/span[2]","//span[contains(., 'Top Rated')]","//SPAN[@class='s-item__etrs-text']"],"exampleValues":[{"num":20,"value":"TopRatedPlus"},{"num":30,"value":"TopRatedPlus"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para159_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[2]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[2]/span[1]/span[1]","//span[contains(., '+$98.06 sh')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":23,"value":"+$98.06shipping"},{"num":41,"value":"+$15.36shipping"},{"num":54,"value":"+$19.45shippingestimate"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para160_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[3]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[3]/span[1]/span[1]","//span[contains(., 'from Austr')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":23,"value":"fromAustralia"},{"num":41,"value":"fromAustralia"},{"num":54,"value":"fromUnitedKingdom"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para161_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[5]/span[1]/span[1]","//span[contains(., '14+ watche')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":27,"value":"14+watchers"},{"num":30,"value":"130+sold"},{"num":34,"value":""},{"num":39,"value":""},{"num":41,"value":"29watchers"},{"num":43,"value":"23sold"},{"num":44,"value":"Lastone"},{"num":46,"value":""},{"num":47,"value":""},{"num":49,"value":""},{"num":51,"value":""},{"num":52,"value":""},{"num":55,"value":"6+watchers"},{"num":56,"value":""},{"num":57,"value":"13sold"},{"num":60,"value":"156sold"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para162_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[4]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[4]/div[4]/span[1]/span[2]","//span[contains(., 'eBay Refur')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":30,"value":"eBayRefurbished"},{"num":34,"value":"eBayRefurbished"},{"num":60,"value":"eBayRefurbished"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para163_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]","allXPaths":["/div[1]/div[2]/div[2]","//div[contains(., 'Open Box ·')]","//DIV[@class='s-item__subtitle']"],"exampleValues":[{"num":32,"value":"AppleiPhoneSE(2ndGeneration)64GBCricketWireless"},{"num":33,"value":""},{"num":34,"value":""},{"num":35,"value":""},{"num":36,"value":""},{"num":37,"value":""},{"num":38,"value":""},{"num":39,"value":""},{"num":40,"value":""},{"num":41,"value":""},{"num":42,"value":""},{"num":43,"value":""},{"num":44,"value":""},{"num":45,"value":""},{"num":46,"value":""},{"num":47,"value":""},{"num":48,"value":""},{"num":49,"value":""},{"num":50,"value":""},{"num":51,"value":""},{"num":52,"value":""},{"num":53,"value":""},{"num":54,"value":""},{"num":55,"value":""},{"num":56,"value":""},{"num":57,"value":""},{"num":58,"value":""},{"num":59,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para164_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[2]","allXPaths":["/div[1]/div[2]/div[2]/span[2]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":32,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para165_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[3]","allXPaths":["/div[1]/div[2]/div[2]/span[3]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":32,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para166_text","desc":"","relativeXPath":"/div[1]/div[2]/div[2]/span[4]","allXPaths":["/div[1]/div[2]/div[2]/span[4]","//span[contains(., '·')]","//SPAN[@class='srp-separator srp-separator--TEXT_MIDDOT']"],"exampleValues":[{"num":32,"value":"·"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para167_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[4]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[4]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":32,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para168_text","desc":"","relativeXPath":"/div[1]/div[2]/div[5]/div[4]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[5]/div[4]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":32,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para169_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[1]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[4]/div[1]/span[1]/span[2]","//span[contains(., '$22.95')]","//SPAN[@class='STRIKETHROUGH']"],"exampleValues":[{"num":43,"value":"$22.95"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para170_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[6]/span[1]/span[1]","//span[contains(., '10 watcher')]","//SPAN[@class='BOLD']"],"exampleValues":[{"num":44,"value":"10watchers"},{"num":55,"value":""},{"num":57,"value":""},{"num":60,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para171_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[7]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[7]/span[1]/span[1]/span[1]","//span[contains(., '​Sponsored')]"],"exampleValues":[{"num":44,"value":"​"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para172_text","desc":"","relativeXPath":"/div[1]/div[2]/div[4]/div[7]/span[1]/span[1]/span[1]/span[1]","allXPaths":["/div[1]/div[2]/div[4]/div[7]/span[1]/span[1]/span[1]/span[1]","//span[contains(., 'Sponsored')]"],"exampleValues":[{"num":44,"value":"Sponsored"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para173_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[1]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[3]/div[1]/span[1]/span[2]","//span[contains(., '$4.74')]","//SPAN[@class='STRIKETHROUGH']"],"exampleValues":[{"num":53,"value":"$4.74"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para174_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/div[4]/span[1]","allXPaths":["/div[1]/div[2]/div[3]/div[4]/span[1]","//span[contains(., 'from China')]","//SPAN[@class='s-item__location s-item__itemLocation']"],"exampleValues":[{"num":53,"value":"fromChina"},{"num":59,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para175_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[2]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[2]","//span[contains(., 'to')]","//SPAN[@class='DEFAULT ITALIC']"],"exampleValues":[{"num":54,"value":"to"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para176_text","desc":"","relativeXPath":"/div[1]/div[2]/div[3]/span[1]/span[3]","allXPaths":["/div[1]/div[2]/div[3]/span[1]/span[3]","//span[contains(., '$80.36')]","//SPAN[@class='ITALIC']"],"exampleValues":[{"num":54,"value":"$80.36"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para177_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/span[1]/h2[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/span[1]/h2[1]","//h2[contains(., 'Results Pa')]","id(\"s0-53-16-6-3-4[62]-24-1-2-heading\")","//H2[@class='clipped']"],"exampleValues":[{"num":62,"value":"ResultsPagination-Page2"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para178_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/a[1]","//a[contains(., '')]","//A[@class='pagination__previous icon-link']"],"exampleValues":[{"num":62,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para179_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/a[1]","//a[contains(., '')]","//A[@class='pagination__previous icon-link']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=1"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para180_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[1]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[1]/a[1]","//a[contains(., '1')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"1"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para181_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[1]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[1]/a[1]","//a[contains(., '1')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=1"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para182_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[2]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[2]/a[1]","//a[contains(., '2')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"2"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para183_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[2]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[2]/a[1]","//a[contains(., '2')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=2"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para184_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[3]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[3]/a[1]","//a[contains(., '3')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"3"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para185_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[3]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[3]/a[1]","//a[contains(., '3')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=3"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para186_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[4]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[4]/a[1]","//a[contains(., '4')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"4"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para187_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[4]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[4]/a[1]","//a[contains(., '4')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=4"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para188_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[5]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[5]/a[1]","//a[contains(., '5')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"5"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para189_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[5]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[5]/a[1]","//a[contains(., '5')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=5&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para190_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[6]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[6]/a[1]","//a[contains(., '6')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"6"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para191_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[6]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[6]/a[1]","//a[contains(., '6')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=6&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para192_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[7]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[7]/a[1]","//a[contains(., '7')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"7"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para193_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[7]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[7]/a[1]","//a[contains(., '7')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=7&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para194_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[8]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[8]/a[1]","//a[contains(., '8')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"8"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para195_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[8]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[8]/a[1]","//a[contains(., '8')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=8&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para196_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[9]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[9]/a[1]","//a[contains(., '9')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"9"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para197_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[9]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[9]/a[1]","//a[contains(., '9')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=9&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para198_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[10]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[10]/a[1]","//a[contains(., '10')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"10"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para199_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[10]/a[1]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/ol[1]/li[10]/a[1]","//a[contains(., '10')]","//A[@class='pagination__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=10&rt=nc"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para200_link_text","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/a[2]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/a[2]","//a[contains(., '')]","//A[@class='pagination__next icon-link']"],"exampleValues":[{"num":62,"value":""}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para201_link_address","desc":"","relativeXPath":"/div[2]/span[1]/span[1]/nav[1]/a[2]","allXPaths":["/div[2]/span[1]/span[1]/nav[1]/a[2]","//a[contains(., '')]","//A[@class='pagination__next icon-link']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_pgn=3"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para202_text","desc":"","relativeXPath":"/div[2]/div[1]/span[1]","allXPaths":["/div[2]/div[1]/span[1]","//span[contains(., 'Items Per')]","id(\"srp-ipp-label-text\")","//SPAN[@class='srp-ipp__label']"],"exampleValues":[{"num":62,"value":"ItemsPerPage"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"para203_text","desc":"","relativeXPath":"/div[2]/div[1]/span[2]/button[1]/span[1]/span[1]","allXPaths":["/div[2]/div[1]/span[2]/button[1]/span[1]/span[1]","//span[contains(., '60')]"],"exampleValues":[{"num":62,"value":"60"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para204_link_text","desc":"","relativeXPath":"/div[2]/div[1]/span[2]/span[1]/ul[1]/li[1]/a[1]","allXPaths":["/div[2]/div[1]/span[2]/span[1]/ul[1]/li[1]/a[1]","//a[contains(., '120Items P')]","//A[@class='fake-menu-button__item']"],"exampleValues":[{"num":62,"value":"120Items Per Page"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para205_link_address","desc":"","relativeXPath":"/div[2]/div[1]/span[2]/span[1]/ul[1]/li[1]/a[1]","allXPaths":["/div[2]/div[1]/span[2]/span[1]/ul[1]/li[1]/a[1]","//a[contains(., '120Items P')]","//A[@class='fake-menu-button__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_ipg=120"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"para206_link_text","desc":"","relativeXPath":"/div[2]/div[1]/span[2]/span[1]/ul[1]/li[2]/a[1]","allXPaths":["/div[2]/div[1]/span[2]/span[1]/ul[1]/li[2]/a[1]","//a[contains(., '240Items P')]","//A[@class='fake-menu-button__item']"],"exampleValues":[{"num":62,"value":"240Items Per Page"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"para207_link_address","desc":"","relativeXPath":"/div[2]/div[1]/span[2]/span[1]/ul[1]/li[2]/a[1]","allXPaths":["/div[2]/div[1]/span[2]/span[1]/ul[1]/li[2]/a[1]","//a[contains(., '240Items P')]","//A[@class='fake-menu-button__item']"],"exampleValues":[{"num":62,"value":"https://www.ebay.com/sch/i.html?_from=R40&_nkw=iPhone&_sacat=0&_ipg=240"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/101.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/101.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/101.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/101.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/102.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/102.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/102.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/102.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/103.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/103.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/103.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/103.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/104.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/104.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/104.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/104.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/105.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/105.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/105.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/105.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/106.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/106.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/106.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/106.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/107.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/107.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/107.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/107.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/108.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/108.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/108.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/108.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/109.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/109.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/109.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/109.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/11.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/11.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/11.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/11.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/110.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/110.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/110.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/110.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/111.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/111.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/111.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/111.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/112.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/112.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/112.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/112.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/113.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/113.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/113.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/113.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/114.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/114.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/114.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/114.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/115.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/115.json new file mode 100644 index 0000000..fbbfd19 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/115.json @@ -0,0 +1,1236 @@ +{ + "id": 115, + "name": "Dynamic Iframe", + "url": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "links": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "create_time": "7/8/2023, 8:43:14 AM", + "update_time": "7/15/2023, 8:05:33 AM", + "version": "0.3.5", + "saveThreshold": 10, + "cloudflare": 0, + "environment": 0, + "maxViewLength": 15, + "outputFormat": "xlsx", + "saveName": "地震Info", + "containJudge": false, + "desc": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "inputParameters": [ + { + "id": 0, + "name": "urlList_0", + "nodeId": 1, + "nodeName": "打开网页", + "value": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "desc": "要采集的网址列表,多行以\\n分开", + "type": "text", + "exampleValue": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history" + }, + { + "id": 1, + "name": "inputText_1", + "nodeName": "输入文字", + "nodeId": 3, + "desc": "要输入的文本,如京东搜索框输入:电脑", + "type": "text", + "exampleValue": "1", + "value": "1" + }, + { + "id": 2, + "name": "loopTimes_循环_2", + "nodeId": 5, + "nodeName": "循环", + "desc": "循环循环执行的次数(0代表无限循环)", + "type": "int", + "exampleValue": 0, + "value": 0 + } + ], + "outputParameters": [ + { + "id": 0, + "name": "参数1_文本", + "desc": "", + "type": "double", + "recordASField": 1, + "exampleValue": "5.0" + }, + { + "id": 1, + "name": "参数2_文本", + "desc": "", + "type": "datetime", + "recordASField": 1, + "exampleValue": "2023-06-2912:58:00" + }, + { + "id": 2, + "name": "参数3_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "37.10" + }, + { + "id": 3, + "name": "参数4_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "71.85" + }, + { + "id": 4, + "name": "参数5_文本", + "desc": "", + "type": "int", + "recordASField": 1, + "exampleValue": "140" + }, + { + "id": 5, + "name": "参数1_页面标题", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "塔吉克斯坦" + }, + { + "id": 6, + "name": "参数7_链接地址", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "https://news.ceic.ac.cn/CC20230629125800.html" + }, + { + "id": 7, + "name": "参数8_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "震级(M)" + }, + { + "id": 8, + "name": "参数9_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "发震时刻(UTC+8)" + }, + { + "id": 9, + "name": "参数10_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "纬度(°)" + }, + { + "id": 10, + "name": "参数11_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "经度(°)" + }, + { + "id": 11, + "name": "参数12_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "深度(千米)" + }, + { + "id": 12, + "name": "参数13_文本", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "参考位置" + } + ], + "graph": [ + { + "index": 0, + "id": 0, + "parentId": 0, + "type": -1, + "option": 0, + "title": "root", + "sequence": [1, 3, 4, 5], + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "wait": 0, + "waitType": 0 + }, + "isInLoop": false + }, + { + "id": 1, + "index": 1, + "parentId": 0, + "type": 0, + "option": 1, + "title": "打开网页", + "sequence": [], + "isInLoop": false, + "position": 0, + "parameters": { + "useLoop": false, + "xpath": "", + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "url": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "links": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "maxWaitTime": 10, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "cookies": "" + } + }, + { + "id": -1, + "index": 2, + "parentId": 0, + "type": 0, + "option": 3, + "title": "提取数据", + "sequence": [], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 6, + "relative": false, + "name": "参数1_页面标题", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/iframe[1]", + "allXPaths": [ + "/html/body/iframe[1]", + "//iframe[contains(., '')]", + "id(\"myIframe\")", + "/html/body/iframe[last()-1]" + ], + "exampleValues": [{ "num": 0, "value": "Dynamic Iframe" }], + "unique_index": "14hqdlhesn6ljt6eja8", + "iframe": false, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": false, + "name": "参数1_链接文本", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]", + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]", + "//a[contains(., '查询')]", + "id(\"search\")", + "//A[@class='check']", + "/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a" + ], + "exampleValues": [{ "num": 0, "value": "查询" }], + "unique_index": "gxhcdetmmgcljt6evon", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 5, + "relative": false, + "name": "参数1_页面网址", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/iframe[1]", + "allXPaths": [ + "/html/body/iframe[1]", + "//iframe[contains(., '')]", + "id(\"myIframe\")", + "/html/body/iframe[last()-1]" + ], + "exampleValues": [ + { + "num": 0, + "value": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history" + } + ], + "unique_index": "e663xi39mb4ljt6em4l", + "iframe": false, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ] + } + }, + { + "id": 2, + "index": 3, + "parentId": 0, + "type": 0, + "option": 4, + "title": "输入文字", + "sequence": [], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[@id=\"weidu1\"]", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "value": "1", + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]", + "//input[contains(., '')]", + "id(\"weidu1\")", + "//INPUT[@class='span1']", + "//INPUT[@name='weidu1']", + "/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]" + ] + } + }, + { + "id": 3, + "index": 4, + "parentId": 0, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": false, + "position": 2, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[@id=\"search\"]", + "iframe": true, + "wait": 2, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]", + "//a[contains(., '查询')]", + "id(\"search\")", + "//A[@class='check']", + "/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a" + ] + } + }, + { + "id": 4, + "index": 5, + "parentId": 0, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [7, 6], + "isInLoop": false, + "position": 3, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 0, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]", + "//a[contains(., '»')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a" + ] + } + }, + { + "id": 6, + "index": 6, + "parentId": 4, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": true, + "xpath": "//*[contains(@class, \"pagination\")]/ul[1]/li[10]/a[1]", + "iframe": true, + "wait": 2, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]", + "//a[contains(., '»')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a" + ], + "loopType": 0 + } + }, + { + "id": 5, + "index": 7, + "parentId": 4, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [8], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 1, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]", + "//tr[contains(., '震级(M)发震时刻(')]", + "//TR[@class='speed-tr-h1']", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]" + ] + } + }, + { + "id": 7, + "index": 8, + "parentId": 5, + "type": 0, + "option": 3, + "title": "提取数据", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数1_文本", + "desc": "", + "relativeXPath": "/td[1]", + "allXPaths": [ + "/td[1]", + "//td[contains(., '5.0')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]" + ], + "exampleValues": [{ "num": 0, "value": "5.0" }], + "unique_index": "/td[1]", + "iframe": true, + "default": "8.8", + "paraType": "double", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数2_文本", + "desc": "", + "relativeXPath": "/td[2]", + "allXPaths": [ + "/td[2]", + "//td[contains(., '2023-06-29')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]" + ], + "exampleValues": [{ "num": 0, "value": "2023-06-2912:58:00" }], + "unique_index": "/td[2]", + "iframe": true, + "default": "2020-02-08 00:01:02", + "paraType": "datetime", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数3_文本", + "desc": "", + "relativeXPath": "/td[3]", + "allXPaths": [ + "/td[3]", + "//td[contains(., '37.10')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]" + ], + "exampleValues": [{ "num": 0, "value": "37.10" }], + "unique_index": "/td[3]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数4_文本", + "desc": "", + "relativeXPath": "/td[4]", + "allXPaths": [ + "/td[4]", + "//td[contains(., '71.85')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]" + ], + "exampleValues": [{ "num": 0, "value": "71.85" }], + "unique_index": "/td[4]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数5_文本", + "desc": "", + "relativeXPath": "/td[5]", + "allXPaths": [ + "/td[5]", + "//td[contains(., '140')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]" + ], + "exampleValues": [{ "num": 0, "value": "140" }], + "unique_index": "/td[5]", + "iframe": true, + "default": "", + "paraType": "int", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数1_页面标题", + "desc": "", + "relativeXPath": "/td[6]/a[1]", + "allXPaths": [ + "/td[6]/a[1]", + "//a[contains(., '塔吉克斯坦')]", + "id(\"cid\")", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a" + ], + "exampleValues": [{ "num": 0, "value": "塔吉克斯坦" }], + "unique_index": "/td[6]/a[1]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数7_链接地址", + "desc": "", + "relativeXPath": "/td[6]/a[1]", + "allXPaths": [ + "/td[6]/a[1]", + "//a[contains(., '塔吉克斯坦')]", + "id(\"cid\")", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a" + ], + "exampleValues": [ + { + "num": 0, + "value": "https://news.ceic.ac.cn/CC20230629125800.html" + } + ], + "unique_index": "/td[6]/a[1]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数8_文本", + "desc": "", + "relativeXPath": "/th[1]", + "allXPaths": [ + "/th[1]", + "//th[contains(., '震级(M)')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]" + ], + "exampleValues": [{ "num": 1, "value": "震级(M)" }], + "unique_index": "/th[1]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数9_文本", + "desc": "", + "relativeXPath": "/th[2]", + "allXPaths": [ + "/th[2]", + "//th[contains(., '发震时刻(UTC+8')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]" + ], + "exampleValues": [{ "num": 1, "value": "发震时刻(UTC+8)" }], + "unique_index": "/th[2]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数10_文本", + "desc": "", + "relativeXPath": "/th[3]", + "allXPaths": [ + "/th[3]", + "//th[contains(., '纬度(°)')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]" + ], + "exampleValues": [{ "num": 1, "value": "纬度(°)" }], + "unique_index": "/th[3]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数11_文本", + "desc": "", + "relativeXPath": "/th[4]", + "allXPaths": [ + "/th[4]", + "//th[contains(., '经度(°)')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]" + ], + "exampleValues": [{ "num": 1, "value": "经度(°)" }], + "unique_index": "/th[4]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数12_文本", + "desc": "", + "relativeXPath": "/th[5]", + "allXPaths": [ + "/th[5]", + "//th[contains(., '深度(千米)')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]" + ], + "exampleValues": [{ "num": 1, "value": "深度(千米)" }], + "unique_index": "/th[5]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数13_文本", + "desc": "", + "relativeXPath": "/th[6]", + "allXPaths": [ + "/th[6]", + "//th[contains(., '参考位置')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th" + ], + "exampleValues": [{ "num": 1, "value": "参考位置" }], + "unique_index": "/th[6]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ], + "loopType": 1 + } + }, + { + "id": -1, + "index": 9, + "parentId": 5, + "type": 2, + "option": 9, + "title": "判断条件", + "sequence": [10], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 + } + }, + { + "id": -1, + "parentId": 9, + "index": 10, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [16], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": "3", + "value": "日本", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 9, + "index": 11, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "index": 12, + "id": -1, + "parentId": 9, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [13], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "index": 13, + "parentId": 10, + "type": 2, + "option": 9, + "title": "条件分支", + "sequence": [14, 15], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 + } + }, + { + "id": -1, + "parentId": 13, + "index": 14, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 13, + "index": 15, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "id": -1, + "index": 16, + "parentId": 11, + "type": 0, + "option": 5, + "title": "Break", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "codeMode": "3", + "code": "", + "waitTime": 0, + "recordASField": 0, + "paraType": "text" + } + }, + { + "id": -1, + "index": 17, + "parentId": 4, + "type": 2, + "option": 9, + "title": "判断条件", + "sequence": [18], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 + } + }, + { + "id": -1, + "parentId": 6, + "index": 18, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [20], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": "5", + "value": "哥伦比亚", + "code": "return document.body.innerText.includes(\"哥伦比亚\")", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 7, + "index": 19, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "id": -1, + "index": 20, + "parentId": 9, + "type": 0, + "option": 5, + "title": "退出循环", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "codeMode": "3", + "code": "", + "waitTime": 0, + "recordASField": 0, + "paraType": "text" + } + }, + { + "index": 21, + "id": -1, + "parentId": 6, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 + } + ] +} diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/116.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/116.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/116.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/116.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/117.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/117.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/117.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/117.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/118.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/118.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/118.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/118.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/119.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/119.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/119.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/119.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/12.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/12.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/12.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/12.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/120.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/120.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/120.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/120.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/121.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/121.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/121.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/121.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/122.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/122.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/122.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/122.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/123.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/123.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/123.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/123.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/124.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/124.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/124.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/124.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/125.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/125.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/125.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/125.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/126.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/126.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/126.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/126.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/127.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/127.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/127.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/127.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/128.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/128.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/128.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/128.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/129.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/129.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/129.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/129.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/13.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/13.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/13.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/13.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/130.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/130.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/130.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/130.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/131.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/131.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/131.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/131.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/132.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/132.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/132.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/132.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/133.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/133.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/133.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/133.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/134.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/134.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/134.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/134.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/135.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/135.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/135.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/135.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/136.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/136.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/136.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/136.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/137.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/137.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/137.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/137.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/138.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/138.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/138.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/138.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/139.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/139.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/139.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/139.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/140.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/140.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/140.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/140.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/141.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/141.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/141.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/141.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/142.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/142.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/142.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/142.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/143.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/143.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/143.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/143.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/144.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/144.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/144.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/144.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/145.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/145.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/145.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/145.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/146.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/146.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/146.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/146.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/147.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/147.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/147.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/147.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/148.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/148.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/148.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/148.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/149.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/149.json new file mode 100644 index 0000000..5d09492 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/149.json @@ -0,0 +1 @@ +{"id":149,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/7/2023, 6:36:49 AM","update_time":"12/20/2023, 4:03:13 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"mysql","saveName":"京东","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":1,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"List of URLs to be collected, separated by \\n for multiple lines","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","exampleValue":"https://shouji.jd.com/"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"arguments[0].innerText = \"'\" + arguments[0].innerText + '\"'","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/15.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/15.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/15.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/15.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/150.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/150.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/150.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/150.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/151.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/151.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/151.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/151.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/152.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/152.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/152.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/152.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/153.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/153.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/153.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/153.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/154.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/154.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/154.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/154.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/155.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/155.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/155.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/155.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/156.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/156.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/156.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/156.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/157.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/157.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/157.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/157.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/158.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/158.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/158.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/158.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/16.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/16.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/16.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/16.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/161.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/161.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/161.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/161.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/162.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/162.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/162.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/162.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/163.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/163.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/163.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/163.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/164.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/164.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/164.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/164.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/165.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/165.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/165.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/165.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/166.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/166.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/166.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/166.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/167.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/167.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/167.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/167.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/168.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/168.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/168.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/168.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/169.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/169.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/169.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/169.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/17.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/17.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/17.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/17.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/170.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/170.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/170.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/170.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/171.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/171.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/171.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/171.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/172.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/172.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/172.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/172.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/173.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/173.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/173.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/173.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/174.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/174.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/174.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/174.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/175.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/175.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/175.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/175.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/176.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/176.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/176.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/176.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/177.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/177.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/177.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/177.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/178.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/178.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/178.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/178.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/179.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/179.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/179.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/179.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/180.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/180.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/180.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/180.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/181.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/181.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/181.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/181.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/182.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/182.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/182.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/182.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/183.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/183.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/183.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/183.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/184.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/184.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/184.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/184.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/185.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/185.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/185.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/185.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/186.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/186.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/186.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/186.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/187.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/187.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/187.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/187.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/188.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/188.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/188.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/188.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/189.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/189.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/189.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/189.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/19.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/19.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/19.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/19.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/190.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/190.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/190.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/190.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/191.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/191.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/191.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/191.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/192.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/192.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/192.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/192.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/193.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/193.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/193.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/193.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/194.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/194.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/194.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/194.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/195.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/195.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/195.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/195.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/196.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/196.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/196.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/196.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/197.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/197.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/197.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/197.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/198.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/198.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/198.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/198.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/199.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/199.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/199.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/199.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/2.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/2.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/2.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/2.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/20.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/20.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/20.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/20.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/200.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/200.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/200.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/200.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/201.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/201.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/201.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/201.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/202.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/202.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/202.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/202.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/203.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/203.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/203.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/203.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/204.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/204.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/204.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/204.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/205.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/205.json new file mode 100644 index 0000000..69fe2d0 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/205.json @@ -0,0 +1 @@ +{"id":205,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"8/10/2023, 6:19:22 PM","update_time":"8/10/2023, 6:35:26 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"loopText_1","nodeId":4,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"1~2\n3~4","value":"1~2\n3~4"},{"id":2,"name":"inputText_2","nodeName":"输入文字","nodeId":12,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":3,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":4,"name":"自定义操作2","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,7,4,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":5,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,13,12],"isInLoop":false,"position":4,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":9,"index":3,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"paras":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":3,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[6,5,14],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"1~2\n3~4","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":7,"index":5,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":1,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text defcolor']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":6,"index":6,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":2}},{"id":2,"index":7,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"self.a = 15","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":8,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"print(self.a, \"sdf---------------\")\nself.a += 222\nprint(self.a, \"sdf---------------\")","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":-1,"index":9,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[10,11],"isInLoop":false,"position":5,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":6,"index":10,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":0},{"id":-1,"parentId":6,"index":11,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":12,"parentId":5,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","index":0}},{"id":10,"index":13,"parentId":5,"type":0,"option":5,"title":"自定义操作2","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"6","code":"str(self.a) + \"TEST\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":8,"index":14,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"0","index":0}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/206.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/206.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/206.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/206.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/207.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/207.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/207.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/207.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/208.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/208.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/208.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/208.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/209.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/209.json new file mode 100644 index 0000000..6531f86 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/209.json @@ -0,0 +1 @@ +{"id":209,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/12/2023, 12:20:51 PM","update_time":"12/12/2023, 12:20:51 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"领券中心"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://a.jd.com/?channel=haiwai"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[4]/div[1]/ul[1]/li/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[4]/div[1]/ul[1]/li[1]/a[1]","//a[contains(., '领券中心')]","/html/body/div[last()-6]/div/ul/li[last()-1]/a"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"paras":[{"nodeType":1,"contentType":8,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"领券中心"}],"unique_index":"jm1mx01sc2elq1u4av8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://a.jd.com/?channel=haiwai"}],"unique_index":"jm1mx01sc2elq1u4av8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/210.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/210.json new file mode 100644 index 0000000..cd71589 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/210.json @@ -0,0 +1,337 @@ +{ + "id": 210, + "name": "【海鸥怎么样】海鸥口碑好不好_缺点_优点_点评_易车", + "url": "https://dianping.yiche.com/haiou/koubei/", + "links": "https://dianping.yiche.com/haiou/koubei/", + "create_time": "12/15/2023, 5:15:10 PM", + "update_time": "12/20/2023, 4:13:00 PM", + "version": "0.6.0", + "saveThreshold": 10, + "quitWaitTime": 60, + "environment": 0, + "maximizeWindow": 0, + "maxViewLength": 15, + "recordLog": 1, + "outputFormat": "xlsx", + "saveName": "current_time", + "dataWriteMode": 1, + "inputExcel": "", + "startFromExit": 0, + "pauseKey": "p", + "containJudge": false, + "browser": "chrome", + "removeDuplicate": 0, + "desc": "https://dianping.yiche.com/haiou/koubei/", + "inputParameters": [ + { + "id": 0, + "name": "urlList_0", + "nodeId": 1, + "nodeName": "打开网页", + "value": "https://dianping.yiche.com/haiou/koubei/", + "desc": "要采集的网址列表,多行以\\n分开", + "type": "text", + "exampleValue": "https://dianping.yiche.com/haiou/koubei/" + }, + { + "id": 1, + "name": "loopTimes_1", + "nodeId": 2, + "nodeName": "循环", + "desc": "循环循环执行的次数(0代表无限循环)", + "type": "int", + "exampleValue": 100, + "value": 100 + } + ], + "outputParameters": [ + { + "id": 0, + "name": "参数1", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "graph": [ + { + "index": 0, + "id": 0, + "parentId": 0, + "type": -1, + "option": 0, + "title": "root", + "sequence": [1, 2], + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0 + }, + "isInLoop": false + }, + { + "id": 1, + "index": 1, + "parentId": 0, + "type": 0, + "option": 1, + "title": "打开网页", + "sequence": [], + "isInLoop": false, + "position": 0, + "parameters": { + "useLoop": false, + "xpath": "", + "wait": 5, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "url": "https://dianping.yiche.com/haiou/koubei/", + "links": "https://dianping.yiche.com/haiou/koubei/", + "maxWaitTime": 10, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "cookies": "" + } + }, + { + "id": 2, + "index": 2, + "parentId": 0, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [4, 3], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[contains(@class, \"next\")]", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 0, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 100, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[6]/div[1]/div[5]/div[1]/a[2]", + "//a[contains(., '>')]", + "//A[@class='link-btn next pg-item']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-1]/div/a" + ] + } + }, + { + "id": 4, + "index": 3, + "parentId": 2, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": true, + "xpath": "", + "iframe": false, + "wait": 5, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[6]/div[1]/div[5]/div[1]/a[2]", + "//a[contains(., '>')]", + "//A[@class='link-btn next pg-item']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-1]/div/a" + ], + "loopType": 0 + } + }, + { + "id": 3, + "index": 4, + "parentId": 2, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [5], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "/html/body/div[6]/div[1]/div[4]/div", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 1, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[6]/div[1]/div[4]/div[1]", + "//div[contains(., '')]", + "//DIV[@class='cm-content-moudle']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-2]/div[last()-19]" + ] + } + }, + { + "id": 5, + "index": 5, + "parentId": 3, + "type": 0, + "option": 3, + "title": "提取数据", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "clear": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 0, + "relative": true, + "name": "参数1", + "desc": "", + "extractType": 0, + "relativeXPath": "", + "allXPaths": "", + "exampleValues": [ + { + "num": 0, + "value": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "unique_index": "3z4vpp3jxm6lq6eyhad", + "iframe": false, + "default": "1", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ], + "loopType": 1, + "params": [ + { + "nodeType": 0, + "contentType": 0, + "relative": true, + "name": "参数1", + "desc": "", + "extractType": 0, + "relativeXPath": "", + "allXPaths": "", + "exampleValues": [ + { + "num": 0, + "value": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "unique_index": "3z4vpp3jxm6lq6eyhad", + "iframe": false, + "default": "1", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ] + } + } + ] +} diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/211.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/211.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/211.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/211.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/212.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/212.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/212.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/212.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/213.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/213.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/213.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/213.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/214.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/214.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/214.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/214.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/215.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/215.json new file mode 100644 index 0000000..46d3fce --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/215.json @@ -0,0 +1 @@ +{"id":215,"name":"弹窗示例","url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","create_time":"12/5/2023, 1:53:45 AM","update_time":"12/13/2023, 3:50:21 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://easyspider.cn/test_pages/alert_test.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/alert_test.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/alert_test.html"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"},{"id":1,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4,3,5],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body[1]/p[eval(\"self.a+1\")]","allXPaths":["//html[1]","//html[contains(., '弹窗示例')]","/html"],"exampleValues":[{"num":0,"value":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"}],"unique_index":"d8of3rzoypelpr7n0qm","iframe":false,"default":"12345","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"alert(eval(\"self.a+2+int('1')\"))","afterJSWaitTime":0,"downloadPic":0}]}},{"id":2,"index":4,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"self.a = 1\nself.b = \"45\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":5,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"console.log(\"Field[\"参数1_文本\"]Field[\"参数1_文本\"]\")","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/216.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/216.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/216.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/216.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/217.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/217.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/217.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/217.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/218.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/218.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/218.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/218.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/219.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/219.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/219.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/219.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/220.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/220.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/220.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/220.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/221.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/221.json new file mode 100644 index 0000000..3ff45cd --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/221.json @@ -0,0 +1 @@ +{"id":221,"name":"不固定元素列表测试:【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/5/2023, 4:12:11 AM","update_time":"12/13/2023, 3:06:51 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_循环点击单个元素_1","nodeId":6,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":3,"name":"参数4_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":4,"name":"参数5_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":5,"name":"参数6_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":6,"name":"参数7_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":7,"name":"参数8_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":8,"name":"参数9_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"},{"id":10,"name":"自定义参数_1","desc":"","type":"text","recordASField":1,"exampleValue":"自定义值"},{"id":11,"name":"发送邮件123","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":3,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[3,6],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":4,"index":3,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":"","loopType":1,"codeMode":-1,"newTab":1}},{"id":6,"index":4,"parentId":5,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":8,"index":5,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数4_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数5_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数6_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数7_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数8_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数9_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"自定义参数_1","desc":"","iframe":false,"extractType":0,"relativeXPath":"//body","recordASField":1,"allXPaths":[],"exampleValues":[{"num":0,"value":"自定义值"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"paraType":"text"}]}},{"id":5,"index":6,"parentId":3,"type":1,"option":8,"title":"循环点击单个元素","sequence":[4,7],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"codeMode":-1}},{"id":7,"index":7,"parentId":5,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"loopType":0}},{"id":2,"index":8,"parentId":0,"type":0,"option":5,"title":"发送邮件123","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"9","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"smtp.163.co23m","port":"465","username":"test@163.com","password":"asdf","from":"","to":"test@163.com","subject":"123","content":"434"}}},{"id":-1,"index":9,"parentId":0,"type":0,"option":5,"title":"暂停程序","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"7","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":10,"parentId":0,"type":0,"option":5,"title":"执行JavaScript","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"0","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":11,"parentId":0,"type":0,"option":5,"title":"暂停程序dfgs","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"7","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/222.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/222.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/222.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/222.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/223.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/223.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/223.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/223.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/224.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/224.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/224.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/224.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/225.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/225.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/225.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/225.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/226.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/226.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/226.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/226.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/227.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/227.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/227.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/227.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/228.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/228.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/228.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/228.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/229.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/229.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/229.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/229.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/23.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/23.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/23.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/23.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/230.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/230.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/230.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/230.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/231.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/231.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/231.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/231.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/232.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/232.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/232.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/232.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/233.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/233.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/233.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/233.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/234.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/234.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/234.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/234.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/235.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/235.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/235.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/235.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/236.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/236.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/236.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/236.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/237.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/237.json new file mode 100644 index 0000000..3e90d13 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/237.json @@ -0,0 +1 @@ +{"id":237,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/9/2023, 3:36:47 AM","update_time":"12/12/2023, 7:12:50 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环点击单个元素_2","nodeId":5,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环点击单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/238.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/238.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/238.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/238.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/239.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/239.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/239.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/239.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/240.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/240.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/240.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/240.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/241.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/241.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/241.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/241.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/242.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/242.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/242.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/242.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/243.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/243.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/243.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/243.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/244.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/244.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/244.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/244.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/245.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/245.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/245.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/245.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/246.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/246.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/246.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/246.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/247.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/247.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/247.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/247.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/248.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/248.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/248.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/248.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/249.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/249.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/249.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/249.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/25.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/25.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/25.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/25.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/250.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/250.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/250.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/250.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/251.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/251.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/251.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/251.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/252.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/252.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/252.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/252.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/253.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/253.json new file mode 100644 index 0000000..feeeac2 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/253.json @@ -0,0 +1 @@ +{"id":253,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/11/2023, 6:52:17 AM","update_time":"12/11/2023, 6:52:17 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"123","value":"123"},{"id":2,"name":"loopTimes_循环点击单个元素_2","nodeId":6,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n\t\t\t\t\t\t\t\t\n\t\t\t\t \t"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"//item.jd.com/10092848337443.html"},{"id":2,"name":"参数3_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"//img13.360buyimg.com/n7/jfs/t1/205525/1/33065/90897/656d32caFeffa6b86/99acb81df6dd3d67.jpg"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"¥"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"59.46"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n\t\t\t\t\t\t\t\t全新速发全新现货二全套123全集当官是一门技术活黄晓阳官 高品质完整版 二号首长全套三本\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"//item.jd.com/10092848337443.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"全新速发全新现货二全套全集当官是一门技术活黄晓阳官高品质完整版二号首长全套三本"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"123"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"条评价"},{"id":10,"name":"参数11_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"0"},{"id":11,"name":"参数12_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"//item.jd.com/10092848337443.html#comment"},{"id":12,"name":"参数13_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"银磊小说专营店"},{"id":13,"name":"参数14_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"//mall.jd.com/index-13208509.html?from=pc"},{"id":14,"name":"参数15_文本","desc":"","type":"text","recordASField":1,"exampleValue":"免邮"},{"id":15,"name":"参数16_文本","desc":"","type":"text","recordASField":1,"exampleValue":"券10-3"},{"id":16,"name":"参数17_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1件9折"},{"id":17,"name":"参数18_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"对比"},{"id":18,"name":"参数19_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"javascript:;"},{"id":19,"name":"参数20_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"关注"},{"id":20,"name":"参数21_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"javascript:;"},{"id":21,"name":"参数22_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"加入购物车"},{"id":22,"name":"参数23_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"//cart.jd.com/gate.action?pid=10092848337443&pcount=1&ptype=1"},{"id":23,"name":"参数24_文本","desc":"","type":"text","recordASField":1,"exampleValue":"0-2、3-6岁亲子绘本书单,超细致分龄指南!掌握0-6岁黄金关键期,让宝宝自然爱上英语启蒙。爸爸妈妈不要怕!跟着读就对了。搜【图书企业购】享特权,团购专线400-026-0000"},{"id":24,"name":"参数25_文本","desc":"","type":"text","recordASField":1,"exampleValue":"..."},{"id":25,"name":"参数26_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"//m.360buyimg.com/cc/jfs/t1/113659/27/28361/2962/62ecb1f0E6c5fc50c/b914680e87a2c8e9.png"},{"id":26,"name":"参数27_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"//m.360buyimg.com/cc/jfs/t1/197706/29/27826/4384/63314bc6E21b4c3e9/8b4d5fc44efc5b3f.png"},{"id":27,"name":"参数28_文本","desc":"","type":"text","recordASField":1,"exampleValue":"领券9日晚8享200减50"},{"id":28,"name":"参数29_文本","desc":"","type":"text","recordASField":1,"exampleValue":"12.8-12.12"},{"id":29,"name":"参数30_文本","desc":"","type":"text","recordASField":1,"exampleValue":"券99-5"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"123","index":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text defcolor']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search-btn\"]/i[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/button[1]/i[1]","//i[contains(., '')]","/html/body/div[last()-6]/div/div[last()-2]/div/button/i"]}},{"id":5,"index":4,"parentId":4,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[2]/ul[1]/li/div[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[2]/ul[1]/li[1]/div[1]","//div[contains(., '')]","//DIV[@class='gl-i-wrap']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div"]}},{"id":7,"index":5,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","relativeXPath":"/div[1]/a[1]","allXPaths":["/div[1]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\n\t\t\t\t \t"}],"unique_index":"/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"/div[1]/a[1]","allXPaths":["/div[1]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/10092848337443.html"}],"unique_index":"/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数3_图片地址","desc":"","relativeXPath":"/div[1]/a[1]/img[1]","allXPaths":["/div[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/a/img"],"exampleValues":[{"num":0,"value":"//img13.360buyimg.com/n7/jfs/t1/205525/1/33065/90897/656d32caFeffa6b86/99acb81df6dd3d67.jpg"}],"unique_index":"/div[1]/a[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/div[2]/strong[1]/em[1]","allXPaths":["/div[2]/strong[1]/em[1]","//em[contains(., '¥')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-6]/strong/em"],"exampleValues":[{"num":0,"value":"¥"}],"unique_index":"/div[2]/strong[1]/em[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/div[2]/strong[1]/i[1]","allXPaths":["/div[2]/strong[1]/i[1]","//i[contains(., '59.46')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-6]/strong/i"],"exampleValues":[{"num":0,"value":"59.46"}],"unique_index":"/div[2]/strong[1]/i[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/div[3]/a[1]","allXPaths":["/div[3]/a[1]","//a[contains(., '全')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t全新速发全新现货二全套123全集当官是一门技术活黄晓阳官 高品质完整版 二号首长全套三本\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t"}],"unique_index":"/div[3]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/div[3]/a[1]","allXPaths":["/div[3]/a[1]","//a[contains(., '全')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/10092848337443.html"}],"unique_index":"/div[3]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/div[3]/a[1]/em[1]","allXPaths":["/div[3]/a[1]/em[1]","//em[contains(., '全新速发全新现货二全')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a/em"],"exampleValues":[{"num":0,"value":"全新速发全新现货二全套全集当官是一门技术活黄晓阳官高品质完整版二号首长全套三本"}],"unique_index":"/div[3]/a[1]/em[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/div[3]/a[1]/em[1]/font[1]","allXPaths":["/div[3]/a[1]/em[1]/font[1]","//font[contains(., '123')]","//FONT[@class='skcolor_ljg']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a/em/font"],"exampleValues":[{"num":0,"value":"123"}],"unique_index":"/div[3]/a[1]/em[1]/font[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/div[4]/strong[1]","allXPaths":["/div[4]/strong[1]","//strong[contains(., '0条评价')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong"],"exampleValues":[{"num":0,"value":"条评价"}],"unique_index":"/div[4]/strong[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数11_链接文本","desc":"","relativeXPath":"/div[4]/strong[1]/a[1]","allXPaths":["/div[4]/strong[1]/a[1]","//a[contains(., '0')]","id(\"J_comment_10092848337443\")","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong/a"],"exampleValues":[{"num":0,"value":"0"}],"unique_index":"/div[4]/strong[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数12_链接地址","desc":"","relativeXPath":"/div[4]/strong[1]/a[1]","allXPaths":["/div[4]/strong[1]/a[1]","//a[contains(., '0')]","id(\"J_comment_10092848337443\")","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/10092848337443.html#comment"}],"unique_index":"/div[4]/strong[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数13_链接文本","desc":"","relativeXPath":"/div[5]/span[1]/a[1]","allXPaths":["/div[5]/span[1]/a[1]","//a[contains(., '银磊小说专营店')]","//A[@class='curr-shop hd-shopname']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-3]/span/a"],"exampleValues":[{"num":0,"value":"银磊小说专营店"}],"unique_index":"/div[5]/span[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数14_链接地址","desc":"","relativeXPath":"/div[5]/span[1]/a[1]","allXPaths":["/div[5]/span[1]/a[1]","//a[contains(., '银磊小说专营店')]","//A[@class='curr-shop hd-shopname']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-3]/span/a"],"exampleValues":[{"num":0,"value":"//mall.jd.com/index-13208509.html?from=pc"}],"unique_index":"/div[5]/span[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数15_文本","desc":"","relativeXPath":"/div[6]/i[1]","allXPaths":["/div[6]/i[1]","//i[contains(., '免邮')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-2]/i[last()-2]"],"exampleValues":[{"num":0,"value":"免邮"}],"unique_index":"/div[6]/i[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数16_文本","desc":"","relativeXPath":"/div[6]/i[2]","allXPaths":["/div[6]/i[2]","//i[contains(., '券10-3')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-2]/i[last()-1]"],"exampleValues":[{"num":0,"value":"券10-3"}],"unique_index":"/div[6]/i[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数17_文本","desc":"","relativeXPath":"/div[6]/i[3]","allXPaths":["/div[6]/i[3]","//i[contains(., '1件9折')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-2]/i"],"exampleValues":[{"num":0,"value":"1件9折"}],"unique_index":"/div[6]/i[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数18_链接文本","desc":"","relativeXPath":"/div[7]/a[1]","allXPaths":["/div[7]/a[1]","//a[contains(., '对比')]","//A[@class='p-o-btn contrast J_contrast contrast-hide']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a[last()-2]"],"exampleValues":[{"num":0,"value":"对比"}],"unique_index":"/div[7]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数19_链接地址","desc":"","relativeXPath":"/div[7]/a[1]","allXPaths":["/div[7]/a[1]","//a[contains(., '对比')]","//A[@class='p-o-btn contrast J_contrast contrast-hide']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a[last()-2]"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[7]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数20_链接文本","desc":"","relativeXPath":"/div[7]/a[2]","allXPaths":["/div[7]/a[2]","//a[contains(., '关注')]","//A[@class='p-o-btn focus J_focus']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a[last()-1]"],"exampleValues":[{"num":0,"value":"关注"}],"unique_index":"/div[7]/a[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数21_链接地址","desc":"","relativeXPath":"/div[7]/a[2]","allXPaths":["/div[7]/a[2]","//a[contains(., '关注')]","//A[@class='p-o-btn focus J_focus']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a[last()-1]"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[7]/a[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数22_链接文本","desc":"","relativeXPath":"/div[7]/a[3]","allXPaths":["/div[7]/a[3]","//a[contains(., '加入购物车')]","//A[@class='p-o-btn addcart']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a"],"exampleValues":[{"num":0,"value":"加入购物车"}],"unique_index":"/div[7]/a[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数23_链接地址","desc":"","relativeXPath":"/div[7]/a[3]","allXPaths":["/div[7]/a[3]","//a[contains(., '加入购物车')]","//A[@class='p-o-btn addcart']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/a"],"exampleValues":[{"num":0,"value":"//cart.jd.com/gate.action?pid=10092848337443&pcount=1&ptype=1"}],"unique_index":"/div[7]/a[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数24_文本","desc":"","relativeXPath":"/div[3]/a[1]/i[1]","allXPaths":["/div[3]/a[1]/i[1]","//i[contains(., '0-2、3-6岁亲子')]","id(\"J_AD_11797923\")","//I[@class='promo-words']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-28]/div/div[last()-5]/a/i"],"exampleValues":[{"num":1,"value":"0-2、3-6岁亲子绘本书单,超细致分龄指南!掌握0-6岁黄金关键期,让宝宝自然爱上英语启蒙。爸爸妈妈不要怕!跟着读就对了。搜【图书企业购】享特权,团购专线400-026-0000"}],"unique_index":"/div[3]/a[1]/i[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数25_文本","desc":"","relativeXPath":"/div[3]/a[1]/em[1]/font[2]","allXPaths":["/div[3]/a[1]/em[1]/font[2]","//font[contains(., '...')]","//FONT[@class='dot']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-27]/div/div[last()-5]/a/em/font"],"exampleValues":[{"num":2,"value":"..."}],"unique_index":"/div[3]/a[1]/em[1]/font[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数26_图片地址","desc":"","relativeXPath":"/div[3]/a[1]/em[1]/img[1]","allXPaths":["/div[3]/a[1]/em[1]/img[1]","//img[contains(., '')]","//IMG[@class='p-tag3']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-25]/div/div[last()-5]/a/em/img"],"exampleValues":[{"num":4,"value":"//m.360buyimg.com/cc/jfs/t1/113659/27/28361/2962/62ecb1f0E6c5fc50c/b914680e87a2c8e9.png"}],"unique_index":"/div[3]/a[1]/em[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数27_图片地址","desc":"","relativeXPath":"/div[5]/img[1]","allXPaths":["/div[5]/img[1]","//img[contains(., '')]","//IMG[@class='shop-tag fl']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-22]/div/div[last()-3]/img"],"exampleValues":[{"num":7,"value":"//m.360buyimg.com/cc/jfs/t1/197706/29/27826/4384/63314bc6E21b4c3e9/8b4d5fc44efc5b3f.png"}],"unique_index":"/div[5]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数28_文本","desc":"","relativeXPath":"/div[1]/a[1]/div[1]/div[1]","allXPaths":["/div[1]/a[1]/div[1]/div[1]","//div[contains(., '领券9日晚8享200')]","//DIV[@class='sign-title ac']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-19]/div/div[last()-7]/a/div/div"],"exampleValues":[{"num":10,"value":"领券9日晚8享200减50"}],"unique_index":"/div[1]/a[1]/div[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数29_文本","desc":"","relativeXPath":"/div[1]/a[1]/div[1]/div[1]/span[1]","allXPaths":["/div[1]/a[1]/div[1]/div[1]/span[1]","//span[contains(., '12.8-12.12')]","//SPAN[@class='sign-date']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-19]/div/div[last()-7]/a/div/div/span"],"exampleValues":[{"num":10,"value":"12.8-12.12"}],"unique_index":"/div[1]/a[1]/div[1]/div[1]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数30_文本","desc":"","relativeXPath":"/div[6]/i[4]","allXPaths":["/div[6]/i[4]","//i[contains(., '券99-5')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li/div/div[last()-2]/i"],"exampleValues":[{"num":29,"value":"券99-5"}],"unique_index":"/div[6]/i[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":4,"index":6,"parentId":0,"type":1,"option":8,"title":"循环点击单个元素","sequence":[4,7],"isInLoop":false,"position":3,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pn-next\")]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[4]/div[1]/span[1]/a[9]","//a[contains(., '下一页>')]","//A[@class='pn-next']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div/div/span[last()-1]/a"]}},{"id":6,"index":7,"parentId":4,"type":0,"option":2,"title":"点击下一页>","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[4]/div[1]/span[1]/a[9]","//a[contains(., '下一页>')]","//A[@class='pn-next']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div/div/span[last()-1]/a"],"loopType":0}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/255.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/255.json new file mode 100644 index 0000000..afa15b9 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/255.json @@ -0,0 +1 @@ +{"id":255,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/12/2023, 12:05:21 AM","update_time":"12/12/2023, 12:05:21 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"//storage.360buyimg.com/i.imageUpload/31383731303839333234345f7031363633333436303135373830_mid.jpg"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":4,"contentType":0,"relative":false,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/a[1]/img[1]","allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div[last()-4]/div/div/div/div[last()-6]/div[last()-1]/a/img"],"exampleValues":[{"num":0,"value":"//storage.360buyimg.com/i.imageUpload/31383731303839333234345f7031363633333436303135373830_mid.jpg"}],"unique_index":"dxuiztdeptblq13uco8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/256.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/256.json new file mode 100644 index 0000000..77001c8 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/256.json @@ -0,0 +1 @@ +{"id":256,"name":"","url":"https://easyspider.cn/test_pages/empty.html","links":"https://easyspider.cn/test_pages/empty.html","create_time":"12/12/2023, 12:51:13 AM","update_time":"12/12/2023, 1:42:26 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"desc":"https://easyspider.cn/test_pages/empty.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/empty.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/empty.html"},{"id":1,"name":"loopText_1","nodeId":8,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n","value":"1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n"}],"outputParameters":[{"id":0,"name":"删除Body节点","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":1,"name":"自定义参数_1","desc":"","type":"text","recordASField":1,"exampleValue":"自定义值"},{"id":2,"name":"刷新页面","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":3,"name":"执行Python代码","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,8],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/empty.html","links":"https://easyspider.cn/test_pages/empty.html","maxWaitTime":10,"scrollType":3,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":5,"title":"删除Body节点","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":1,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"document.body.parentNode.removeChild(document.body);","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":8,"index":3,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":5,"relative":false,"name":"自定义参数_1","desc":"","iframe":false,"extractType":0,"relativeXPath":"//body","recordASField":1,"allXPaths":[],"exampleValues":[{"num":0,"value":"自定义值"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"paraType":"text"}]}},{"id":4,"index":4,"parentId":3,"type":2,"option":9,"title":"判断条件","sequence":[5,6],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":6,"parentId":4,"index":5,"type":3,"option":10,"title":"条件分支1 - 页面有内容","sequence":[3],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"//body","code":"","waitTime":0,"class":"2"},"position":0},{"id":7,"parentId":4,"index":6,"type":3,"option":10,"title":"条件分支2 - 页面没内容","sequence":[7],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":9,"index":7,"parentId":7,"type":0,"option":5,"title":"刷新页面","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"location.reload()","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":3,"index":8,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4,9],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":5,"index":9,"parentId":3,"type":0,"option":5,"title":"执行Python代码","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":5,"code":"print(\"2\")","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/257.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/257.json new file mode 100644 index 0000000..24355f0 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/257.json @@ -0,0 +1 @@ +{"id":257,"name":"百度一下,你就知道","url":"https://www.baidu.com","links":"https://www.baidu.com","create_time":"12/12/2023, 5:59:29 AM","update_time":"12/12/2023, 5:59:29 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"desc":"https://www.baidu.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.baidu.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.baidu.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.baidu.com","links":"https://www.baidu.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":2,"title":"点击“同志加兄弟...","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"hotsearch-content-wrapper\"]/li[1]/a[1]/span[2]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[2]/div[1]/div[5]/div[1]/div[1]/div[3]/ul[1]/li[1]/a[1]/span[2]","//span[contains(., '“同志加兄弟”:中越')]","//SPAN[@class='title-content-title']","/html/body/div[last()-5]/div[last()-3]/div[last()-3]/div/div/div/ul/li[last()-5]/a/span"]}},{"id":3,"index":3,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[4,5],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":5,"parentId":3,"index":4,"type":3,"option":10,"title":"条件分支1","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"hao123","code":"","waitTime":0},"position":0},{"id":6,"parentId":3,"index":5,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"元首","code":"","waitTime":0},"position":1},{"id":4,"index":6,"parentId":0,"type":0,"option":2,"title":"点击\n换一...","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"head_wrapper\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[2]/div[1]/div[5]","//div[contains(., '')]","id(\"head_wrapper\")","//DIV[@class='head_wrapper s-isindex-wrap nologin']","/html/body/div[last()-6]/div[last()-3]/div[last()-3]"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/258.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/258.json new file mode 100644 index 0000000..a4d9178 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/258.json @@ -0,0 +1 @@ +{"id":258,"name":"搜狗搜索引擎 - 上网从搜狗开始","url":"https://www.sogou.com","links":"https://www.sogou.com","create_time":"","update_time":"12/12/2023, 7:38:19 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"desc":"https://www.sogou.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.sogou.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.sogou.com"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"1","value":"1"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,4,5],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.sogou.com","links":"https://www.sogou.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"query\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[2]/div[4]/form[1]/span[1]/input[1]","//input[contains(., '')]","id(\"query\")","//INPUT[@class='sec-input active']","//INPUT[@name='query']","/html/body/div[last()-3]/div[last()-3]/div/form/span[last()-1]/input"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"stb\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[2]/div[4]/form[1]/span[2]/input[1]","//input[contains(., '')]","id(\"stb\")","/html/body/div[last()-3]/div[last()-3]/div/form/span/input"]}},{"id":4,"index":4,"parentId":0,"type":0,"option":2,"title":"点击【1是什么意...","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"results\")]/div[4]/div[1]/h3[1]/a[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[3]/div[2]/div[1]/div[3]/div[1]/div[4]/div[1]/h3[1]/a[1]","//a[contains(., '【1是什么意思】 -')]","//A[@class=' ']","/html/body/div[last()-3]/div[last()-4]/div[last()-1]/div/div/div[last()-9]/div[last()-1]/h3/a"]}},{"id":5,"index":5,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[6,7,8],"isInLoop":false,"position":4,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":6,"parentId":5,"index":6,"type":3,"option":10,"title":"条件分支1","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":2,"value":"//*[@id=\"sogou_vr_21167301_T3_0\"]","code":"","waitTime":0},"position":0},{"id":7,"parentId":5,"index":7,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"懂视","code":"","waitTime":0},"position":1},{"index":8,"id":8,"parentId":5,"type":3,"option":10,"title":"条件分支3","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"自然数","code":"","waitTime":0},"position":2}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/259.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/259.json new file mode 100644 index 0000000..f9d9ab7 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/259.json @@ -0,0 +1 @@ +{"id":259,"name":"","url":"https://mall.espic.com.cn/mall-view/","links":"https://mall.espic.com.cn/mall-view/","create_time":"12/12/2023, 5:26:03 PM","update_time":"12/12/2023, 5:26:03 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://mall.espic.com.cn/mall-view/","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://mall.espic.com.cn/mall-view/","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://mall.espic.com.cn/mall-view/"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://mall.espic.com.cn/mall-view/","links":"https://mall.espic.com.cn/mall-view/","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/260.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/260.json new file mode 100644 index 0000000..d58ea37 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/260.json @@ -0,0 +1 @@ +{"id":260,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:37:19 PM","update_time":"12/13/2023, 11:09:35 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"mysql","saveName":"TE1","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":1,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":2,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":3,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":4,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":5,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":6,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":7,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":8,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":9,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":10,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":11,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":12,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":13,"name":"参数13_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"新疆克孜勒苏州阿克陶县"},{"id":14,"name":"参数14_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CD20231212234122.html"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,13],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":4,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"arguments[0].valueeval(\") += \"11\"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":5,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":7,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":10,"index":6,"parentId":7,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":9,"index":7,"parentId":7,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":14,"index":8,"parentId":12,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":6,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":11,"index":10,"parentId":9,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":12,"parentId":11,"index":11,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"8","code":"return 1","waitTime":0},"position":0},{"id":13,"parentId":11,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":3,"index":13,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[14],"isInLoop":false,"position":2,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":2,"pathList":"//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[2]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[3]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[4]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[5]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[6]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[7]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[8]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[9]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[10]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[11]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[12]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[13]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[14]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[15]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[16]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[17]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[18]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[19]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[20]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[21]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":8,"index":14,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '3.0')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.0"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-12-12')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-12-1223:41:21"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '38.43')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"38.43"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '76.05')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"76.05"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '22')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"22"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数13_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆克孜勒苏州阿克陶')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"新疆克孜勒苏州阿克陶县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数14_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆克孜勒苏州阿克陶')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CD20231212234122.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/261.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/261.json new file mode 100644 index 0000000..54f9ca7 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/261.json @@ -0,0 +1 @@ +{"id":-2,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:41:40 PM","update_time":"12/12/2023, 5:41:40 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 不固定元素列表","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/262.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/262.json new file mode 100644 index 0000000..e4ccdaf --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/262.json @@ -0,0 +1 @@ +{"id":-2,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:45:12 PM","update_time":"12/12/2023, 5:45:12 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/263.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/263.json new file mode 100644 index 0000000..1760c44 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/263.json @@ -0,0 +1 @@ +{"id":-2,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:47:05 PM","update_time":"12/12/2023, 5:47:05 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字1","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/264.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/264.json new file mode 100644 index 0000000..1fb9713 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/264.json @@ -0,0 +1 @@ +{"id":-2,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:48:23 PM","update_time":"12/12/2023, 5:48:31 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字1","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/265.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/265.json new file mode 100644 index 0000000..f22d1a8 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/265.json @@ -0,0 +1 @@ +{"id":-2,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/12/2023, 5:48:35 PM","update_time":"12/12/2023, 5:48:41 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n250\n35","value":"15\n250\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n250\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字1","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/266.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/266.json new file mode 100644 index 0000000..6dcdcdf --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/266.json @@ -0,0 +1 @@ +{"id":266,"name":"高级搜索-招标采购信息搜索","url":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","links":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","create_time":"12/12/2023, 6:00:52 PM","update_time":"12/12/2023, 6:08:57 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12"},{"id":1,"name":"loopTimes_循环点击单个元素_1","nodeId":2,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"济源市中医院急诊科急救设备采购项目成交结果公告"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/public/bidagency/index.html#/infoDetails?fid=1693858951806977"},{"id":2,"name":"参数3_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/public/search/searchadvzbxx/test/images/souc_11.jpg"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"收藏"},{"id":4,"name":"参数5_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://cdn.chinabidding.cn/public/search/searchadvzbxx/test/images/souc_hua_11.jpg"},{"id":5,"name":"参数6_文本","desc":"","type":"text","recordASField":1,"exampleValue":"已收藏"},{"id":6,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"河南"},{"id":7,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"医疗卫生"},{"id":8,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-12-12"},{"id":9,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"您搜索的关键词包含“”,搜索结果可能有偏差!如果信息没有搜索到,请换成“”关键词再次搜索。"},{"id":10,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"数字、字母或特殊字符"},{"id":11,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"文字"},{"id":12,"name":"参数14_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\"\"及其后面的字词均被忽略,因为采购与招标网的查询限制在38个汉字以内。"},{"id":13,"name":"参数15_文本","desc":"","type":"text","recordASField":1,"exampleValue":"集团有"},{"id":14,"name":"参数16_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/public/2020/img/searchgj/icon_gb.png"},{"id":15,"name":"参数17_文本","desc":"","type":"text","recordASField":1,"exampleValue":"广告"},{"id":16,"name":"参数18_文本","desc":"","type":"text","recordASField":1,"exampleValue":"360织语即时通讯-安全的企业内部沟通工具"},{"id":17,"name":"参数19_文本","desc":"","type":"text","recordASField":1,"exampleValue":"广告"},{"id":18,"name":"参数20_文本","desc":"","type":"text","recordASField":1,"exampleValue":"全国"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","links":"https://www.chinabidding.cn/search/searchgj/zbcg?keywords=12","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击单个元素","sequence":[4,3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"pages\"]/a[4]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[11]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/a[4]","//a[contains(., '后一页')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/div/a[last()-2]"]}},{"id":4,"index":3,"parentId":2,"type":0,"option":2,"title":"点击后一页","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[5]/div[1]/div[11]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/a[4]","//a[contains(., '后一页')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/div/a[last()-2]"]}},{"id":3,"index":4,"parentId":2,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[11]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[11]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","id(\"resultPrompt\")","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]"]}},{"id":5,"index":5,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","relativeXPath":"/td[2]/a[1]","allXPaths":["/td[2]/a[1]","//a[contains(., '济源市中医院急诊科急')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-5]/a"],"exampleValues":[{"num":0,"value":"济源市中医院急诊科急救设备采购项目成交结果公告"}],"unique_index":"/td[2]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"/td[2]/a[1]","allXPaths":["/td[2]/a[1]","//a[contains(., '济源市中医院急诊科急')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-5]/a"],"exampleValues":[{"num":0,"value":"/public/bidagency/index.html#/infoDetails?fid=1693858951806977"}],"unique_index":"/td[2]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数3_图片地址","desc":"","relativeXPath":"/td[3]/img[1]","allXPaths":["/td[3]/img[1]","//img[contains(., '')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-4]/img"],"exampleValues":[{"num":0,"value":"/public/search/searchadvzbxx/test/images/souc_11.jpg"}],"unique_index":"/td[3]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[3]/span[1]","allXPaths":["/td[3]/span[1]","//span[contains(., '收藏')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-4]/span"],"exampleValues":[{"num":0,"value":"收藏"}],"unique_index":"/td[3]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数5_图片地址","desc":"","relativeXPath":"/td[4]/img[1]","allXPaths":["/td[4]/img[1]","//img[contains(., '')]","//IMG[@class='active']","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-3]/img"],"exampleValues":[{"num":0,"value":"https://cdn.chinabidding.cn/public/search/searchadvzbxx/test/images/souc_hua_11.jpg"}],"unique_index":"/td[4]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数6_文本","desc":"","relativeXPath":"/td[4]/span[1]","allXPaths":["/td[4]/span[1]","//span[contains(., '已收藏')]","//SPAN[@class='active']","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"已收藏"}],"unique_index":"/td[4]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '河南')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"河南"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/td[6]","allXPaths":["/td[6]","//td[contains(., '医疗卫生')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td[last()-1]"],"exampleValues":[{"num":0,"value":"医疗卫生"}],"unique_index":"/td[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[7]","allXPaths":["/td[7]","//td[contains(., '2023-12-1')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"2023-12-12"}],"unique_index":"/td[7]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/td[1]/div[1]/h4[1]","allXPaths":["/td[1]/div[1]/h4[1]","//h4[contains(., '')]","//H4[@class='promptText']","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/h4[last()-1]"],"exampleValues":[{"num":1,"value":"您搜索的关键词包含“”,搜索结果可能有偏差!如果信息没有搜索到,请换成“”关键词再次搜索。"}],"unique_index":"/td[1]/div[1]/h4[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/td[1]/div[1]/h4[1]/span[1]","allXPaths":["/td[1]/div[1]/h4[1]/span[1]","//span[contains(., '数字、字母或特殊字符')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/h4[last()-1]/span[last()-1]"],"exampleValues":[{"num":1,"value":"数字、字母或特殊字符"}],"unique_index":"/td[1]/div[1]/h4[1]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/td[1]/div[1]/h4[1]/span[2]","allXPaths":["/td[1]/div[1]/h4[1]/span[2]","//span[contains(., '文字')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/h4[last()-1]/span"],"exampleValues":[{"num":1,"value":"文字"}],"unique_index":"/td[1]/div[1]/h4[1]/span[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数14_文本","desc":"","relativeXPath":"/td[1]/div[1]/h4[2]","allXPaths":["/td[1]/div[1]/h4[2]","//h4[contains(., '')]","//H4[@class='promptText2']","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/h4"],"exampleValues":[{"num":1,"value":"\"\"及其后面的字词均被忽略,因为采购与招标网的查询限制在38个汉字以内。"}],"unique_index":"/td[1]/div[1]/h4[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数15_文本","desc":"","relativeXPath":"/td[1]/div[1]/h4[2]/span[1]","allXPaths":["/td[1]/div[1]/h4[2]/span[1]","//span[contains(., '集团有')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/h4/span"],"exampleValues":[{"num":1,"value":"集团有"}],"unique_index":"/td[1]/div[1]/h4[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数16_图片地址","desc":"","relativeXPath":"/td[1]/div[1]/div[1]/img[1]","allXPaths":["/td[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-31]/td/div/div/img"],"exampleValues":[{"num":1,"value":"/public/2020/img/searchgj/icon_gb.png"}],"unique_index":"/td[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数17_文本","desc":"","relativeXPath":"/td[2]/div[1]/span[1]","allXPaths":["/td[2]/div[1]/span[1]","//span[contains(., '广告')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-30]/td[last()-4]/div/span[last()-1]"],"exampleValues":[{"num":2,"value":"广告"}],"unique_index":"/td[2]/div[1]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数18_文本","desc":"","relativeXPath":"/td[2]/div[1]/span[2]","allXPaths":["/td[2]/div[1]/span[2]","//span[contains(., '360织语即时通讯-')]","//SPAN[@class='advTitle']","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-30]/td[last()-4]/div/span"],"exampleValues":[{"num":2,"value":"360织语即时通讯-安全的企业内部沟通工具"}],"unique_index":"/td[2]/div[1]/span[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数19_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '广告')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-30]/td[last()-3]"],"exampleValues":[{"num":2,"value":"广告"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数20_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '全国')]","/html/body/div[last()-10]/div[last()-2]/div/table/tbody/tr/td/table/tbody/tr[last()-30]/td[last()-2]"],"exampleValues":[{"num":2,"value":"全国"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/267.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/267.json new file mode 100644 index 0000000..91fd02d --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/267.json @@ -0,0 +1 @@ +{"id":267,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/13/2023, 2:14:40 AM","update_time":"12/13/2023, 2:14:40 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"1","value":"1"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search-link\"]/i[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/a[1]/i[1]","//i[contains(., '')]","/html/body/div[last()-6]/div/div[last()-2]/div/a/i"]}},{"id":-1,"index":4,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search-link\"]/i[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/a[1]/i[1]","//i[contains(., '')]","/html/body/div[last()-6]/div/div[last()-2]/div/a/i"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/268.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/268.json new file mode 100644 index 0000000..52379e9 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/268.json @@ -0,0 +1 @@ +{"id":268,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/13/2023, 2:16:08 AM","update_time":"12/13/2023, 3:07:50 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n \n \n \n \n \n 京东首页\n \t\t\t\t\t\t\t\t\t\t\t海外 \t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t北京上海天津重庆河北山西河南辽宁吉林黑龙江内蒙古江苏山东安徽浙江福建湖北湖南广东广西江西四川海南贵州云南西藏陕西甘肃青海宁夏新疆港澳台湾钓鱼岛海外 \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t 地区专享版本 \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國港澳 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國台灣 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t京东全球 \t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t Available Sites \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tGlobal Site \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tСайт России \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitus Indonesia \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitio de España \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t เว็บไซต์ประเทศไทย \t\t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t\t\n \n \n 你好,请登录  免费注册\n \n \n \n 我的订单\n \n \n \n \n \n 我的京东\n \n \n \n \n \n \n 京东会员\n \n \n \n \n \n 企业采购\n \n \n \n \n \n 客户服务\n \n \n \n \n \n \n 网站导航\n \n \n \n \n \n \n 手机京东\n \n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n 网站无障碍\n \n \n \n \n \n \n\n \n \n \n (function (window) {\n window.data = window.data || {}\n window.data['cms_header'] = {\n setting: [{\"NAME\":\"手机\",\"URL\":\"//\",\"ANCHOR\":\"\",\"property\":\"\",\"CUSTOM1\":\"#050505\",\"CUSTOM2\":\"\",\"CUSTOM3\":\"\"}]\n }\n })(window)\n \n \n #search-2014 .text {border-color: #050505;}#search-2014 .button {background: #050505;} 京东 手机 全部分类◇ 搜索 >0 我的购物车 \n \n\n \n\n \n \n 顶通组件占位手机分类热门推荐苹果华为荣耀小米vivoOPPO运营商手机卡营业厅充话费配件充电器数据线手机壳贴膜移动电源创意配件热门分类全部手机5G手机苹果 iPhone 11iPhone XS Max华为Mate40 Pro 4Gnova 8 Pro 无充Nova8SE 乐活版Mate 40 RSNova 9P50 Pro 4G华为智选手机荣耀荣耀V30 PRO荣耀30 Pro荣耀X10 Max荣耀Play4 Pro小米小米10Redmi K30vivoS10 ProX60Y70t iQOO 8 iQOO Neo5 iQOO Z3OPPOReno 6OPPO K9 Find X3品牌中国移动中国联通中国电信精选店铺京东通信北京移动广东移动宽带专区50M300M优选品牌Anker罗马仕品胜倍思绿联亿色毕亚兹斯泰克热卖爆款移动电源原装充电器散热背夹扩展坞苹果数据线氮化镓Type C信号放大器手游周边王者荣耀手机散热器吃鸡神器弯头线游戏手柄王座同屏器新奇好物氮化镓PD快充双向快充创意配件配件频道海量配件低至9.包邮机身存储16GB8GB4GB分辨率全高清FHD+高清HD+屏幕尺寸5.0英寸及以下5.0~5.49英寸5.5~5.99英寸6.0~6.24英寸有新机游戏手机手机营业厅手机好店以旧换新企业购热卖推荐人气新品限时特惠配件专区摩斯维 适用华为mate40pro手机壳Mate40 Pro保护套真素皮超薄epro全包防摔马特男女 【买家推荐!石墨黑】真皮质感丨贈全屏膜¥59.000度 联想拯救者Y90钢化膜手机膜全屏防蓝光电竞磨砂防反光游戏保护膜防汗防指纹疏油玻璃贴膜 拯救者Y90(AG悦享版)¥99.00漫步者(EDIFIER)W820NB经典版 头戴蓝牙主动降噪耳机 金标认证 蓝牙5.2 手机电脑笔记本耳机 云岩白¥279.00闪魔 苹果13钢化膜 iphone13Promax手机膜mini全屏无边高清抗指纹保护贴膜 苹果13/13Pro【加强版】2片+神器¥19.80声阔Soundcore超能小彩蛋 LifeP3主动降噪真无线TWS入耳式蓝牙耳机适用苹果/华为/小米手机蓝30H续航版¥349.00\n \n \n\n \n \n \n\n \n\n \n \n window.pageConfig = window.pageConfig || {}\n window.pageConfig.o2JSConfig = {\n useTplInJs: true,\n pathRule: function (path) {\n return '//static.360buyimg.com/mtd/pc/cms' + '/floors/' + path + '.min.js'\n }\n }\n \n seajs.use(['//static.360buyimg.com/mtd/pc/base/1.0.1/channel.js'])\n \n seajs.use(['//wl.jd.com/wl.js'])\n \n \n \n !(function () {\n var testObject = {}\n if (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf\n Object.getPrototypeOf = function (object) {\n return object.__proto__ || nativeGetPrototypeOf.call(Object, object)\n }\n }\n })()\n \n \n \n \n \n \n // nerv-create-class 用 'nervjs'\n window.nervjs = Nerv\n // nerv-create-class\n !(function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"nervjs\")):\"function\"==typeof define&&define.amd?define([\"nervjs\"],e):t.NervCreateClass=e(t.nervjs)})(this,(function(t){\"use strict\";function e(t){return t===undefined||null===t}function n(){}function r(t){return\"function\"==typeof t}function o(t){return t===undefined}function i(t,n){for(var r in n)e(n[r])||(t[r]=n[r]);return t}function a(t){for(var e in t){var n=t[e];\"function\"!=typeof n||n.__bound||1===g[e]||((t[e]=n.bind(t)).__bound=!0)}}function c(t,e){void 0===e&&(e={});for(var n=0,r=t.length;n wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n };\n return throttled;\n }\n // Context\n var LingAtomScrollContext = Nerv.createContext({\n scrollTop: 0,\n windowHeight: 0,\n bodyHeight: 0\n })\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n function genComponentElement (type, props, children) {\n \n return Nerv.createElement(\n Lc[type] ? Lc[type].component : 'div',\n props,\n children\n )\n \n }\n \n \n window.Lc = window.Lc || {}\n Lc['Page'] = { component: 'div' }\n \n \n function EventEmitter () {\n var eventEmitterPool = {}\n var eventEmitter = {\n on: function (eventName, handler) {\n eventEmitterPool[eventName] = eventEmitterPool[eventName] || []\n eventEmitterPool[eventName].push(handler)\n },\n trigger: function (eventName) {\n var handlers = eventEmitterPool[eventName] || []\n var args = Array.prototype.slice.call(arguments, 1)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].apply(this, args)\n }\n },\n off: function (eventName, handler) {\n if (!eventEmitterPool[eventName]) return\n if (!handler) {\n eventEmitterPool[eventName] = []\n return\n }\n var handlers = eventEmitterPool[eventName] || []\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n eventEmitterPool[eventName].splice(i, 1)\n break\n }\n }\n }\n }\n return eventEmitter\n }\n var eventEmitter = EventEmitter()\n\n !function () {\n var downloadedBundles = [\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a6__5ee34e5afc685b3ecdd0f087.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a7__5ee34e58fc685b3ecdd0f078.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a8__5ee34e5afc685b3ecdd0f08a.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a9__5fa90cbc7e292cb70199df98.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd594__5ee34e59fc685b3ecdd0f07e.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5aa__5ee34e5bfc685b3ecdd0f094.js\"]\n var body = document.body || document.documentElement\n var Wrap = function (props) {\n return props.children\n }\n // Lazyload Component\n var LazyLoadComponent = NervCreateClass({\n // loading loaded\n status: '',\n getInitialState: function () {\n return {\n status: 'initial'\n }\n },\n updateOffsetTop: function () {\n if (this.state.status !== 'initial') return\n var node = Nerv.findDOMNode(this)\n var rect = node.getBoundingClientRect()\n var winHeight = this.props.__context.windowHeight\n var canLoad = rect.top < winHeight * 1.5 && rect.top + rect.height > -winHeight * 0.5\n if (canLoad) {\n this.downloadScript()\n }\n },\n delayLoaded: function () {\n var that = this\n setTimeout(function () {\n that.setState({ status: 'loaded' })\n }, 500)\n },\n downloadScript: function () {\n var that = this\n var myItem = this.props.item\n if (!myItem.reactBundle || downloadedBundles.indexOf(myItem.reactBundle) !== -1) {\n if (Lc[myItem.type]) {\n this.setState({ status: 'loading' })\n this.delayLoaded()\n } else {\n eventEmitter.on(myItem.type, function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n })\n }\n return\n }\n myItem.reactBundle = myItem.reactBundle && myItem.reactBundle.replace('storage.jd.com', 'storage.360buyimg.com')\n downloadedBundles.push(myItem.reactBundle)\n var element = document.createElement('script')\n element.src = myItem.reactBundle\n element.charset = 'UTF-8'\n body.appendChild(element)\n element.onload = function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n eventEmitter.trigger(myItem.type)\n }\n },\n componentDidMount: function () {\n this.updateOffsetTop()\n },\n componentWillReceiveProps: function (nextProps) {\n this.updateOffsetTop()\n },\n shouldComponentUpdate: function (nextProps, nextState) {\n return this.state.status !== nextState.status\n },\n componentDidCatch: function (error, info) {\n // console.log(error)\n // 上报组件渲染错误\n // @see //talos30011-prelb.o2athena.svc.n.jd.local/api-docs#null%2Fpaths%2F~1report%2Fpost\n var xhr = new XMLHttpRequest()\n xhr.open('POST', 'https://atom-log.3.cn/report', true)\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')\n xhr.send('platform=h5&url=' + location.href + '&cname=' + this.props.item.type + '&project=' + globalData.projectId)\n },\n getWrappedElement: function (extraProps) {\n if (this.WrappedElement) {\n return this.WrappedElement\n }\n var item = this.props.item\n var children = item.props.content || this.props.children || null\n var WrappedElement = genComponentElement(item.type, Object.assign({}, item.props, extraProps), children)\n this.WrappedElement = WrappedElement\n return WrappedElement\n },\n render: function () {\n var that = this\n var status = this.state.status\n // if (status === 'initial' || status === 'loading') {\n if (status === 'initial') {\n return Nerv.createElement(\n 'div',\n {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n }\n // status === 'loading' ?\n // Nerv.createElement(\n // 'div',\n // {\n // style: {\n // width: 0,\n // height: 0,\n // overflow: 'hidden'\n // }\n // },\n // that.getWrappedElement()\n // ) : null\n )\n } else {\n // return that.getWrappedElement()\n // 缺点是多了一层 div\n this.cc = this.cc || that.getWrappedElement()\n return Nerv.createElement(\n 'div',\n status === 'loading' ? {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n } : {},\n this.cc\n )\n }\n }\n })\n\n function createTree (tree) {\n tree = tree.filter(function (item) {\n return item.isShow === undefined || item.isShow === true\n })\n\n return tree.map(function (item) {\n var hasChildren = item.childrens && item.childrens.length\n hasChildren && (item.props.children = createTree(item.childrens))\n if (hasChildren) {\n return genComponentElement(item.type, item.props, item.props.content)\n } else {\n return Nerv.createElement(\n LingAtomScrollContext.Consumer,\n {},\n function (context) {\n return Nerv.createElement(\n LazyLoadComponent,\n {\n item: item,\n __context: context\n }\n )\n }\n )\n }\n })\n }\n\n var App = NervCreateClass({\n getInitialState: function () {\n return {\n scrollTop: 0,\n windowHeight: window.innerHeight,\n bodyHeight: document.body.clientHeight\n }\n },\n componentDidMount: function () {\n var that = this\n window.onscroll = throttle(function () {\n var bodyScrollHeight = document.documentElement.scrollTop || document.body.scrollTop\n that.setState({\n scrollTop: bodyScrollHeight\n })\n }, 200)\n window.onresize = function () {\n var windowInnerHeight = window.innerHeight\n if (windowInnerHeight === that.state.windowHeight) return\n that.setState({\n windowHeight: windowInnerHeight\n })\n }\n function onElementHeightChange (elm, callback) {\n var lastHeight = elm.clientHeight\n var newHeight\n (function run () {\n newHeight = elm.clientHeight\n if (lastHeight !== newHeight) {\n callback(newHeight)\n }\n lastHeight = newHeight\n if (elm.onElementHeightChangeTimer) {\n clearTimeout(elm.onElementHeightChangeTimer)\n }\n elm.onElementHeightChangeTimer = setTimeout(run, 200)\n })()\n }\n onElementHeightChange(document.body, function (h) {\n that.setState({ bodyHeight: h })\n })\n },\n render: function () {\n return Nerv.createElement(\n LingAtomScrollContext.Provider,\n {\n value: this.state\n },\n createTree(window.o2PageConfig.data)\n )\n }\n })\n\n Nerv.render(\n Nerv.createElement(App),\n document.querySelector('#app')\n )\n }()\n \n \n\n\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: /html/body \n"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[3,4],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":3,"index":3,"parentId":2,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":"不滚动","scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":4,"index":4,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body","allXPaths":["/html/body","//body[contains(., '')]","/html/body"],"exampleValues":[{"num":0,"value":"\n \n \n \n \n \n 京东首页\n \t\t\t\t\t\t\t\t\t\t\t海外 \t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t北京上海天津重庆河北山西河南辽宁吉林黑龙江内蒙古江苏山东安徽浙江福建湖北湖南广东广西江西四川海南贵州云南西藏陕西甘肃青海宁夏新疆港澳台湾钓鱼岛海外 \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t 地区专享版本 \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國港澳 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國台灣 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t京东全球 \t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t Available Sites \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tGlobal Site \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tСайт России \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitus Indonesia \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitio de España \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t เว็บไซต์ประเทศไทย \t\t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t\t\n \n \n 你好,请登录  免费注册\n \n \n \n 我的订单\n \n \n \n \n \n 我的京东\n \n \n \n \n \n \n 京东会员\n \n \n \n \n \n 企业采购\n \n \n \n \n \n 客户服务\n \n \n \n \n \n \n 网站导航\n \n \n \n \n \n \n 手机京东\n \n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n 网站无障碍\n \n \n \n \n \n \n\n \n \n \n (function (window) {\n window.data = window.data || {}\n window.data['cms_header'] = {\n setting: [{\"NAME\":\"手机\",\"URL\":\"//\",\"ANCHOR\":\"\",\"property\":\"\",\"CUSTOM1\":\"#050505\",\"CUSTOM2\":\"\",\"CUSTOM3\":\"\"}]\n }\n })(window)\n \n \n #search-2014 .text {border-color: #050505;}#search-2014 .button {background: #050505;} 京东 手机 全部分类◇ 搜索 >0 我的购物车 \n \n\n \n\n \n \n 顶通组件占位手机分类热门推荐苹果华为荣耀小米vivoOPPO运营商手机卡营业厅充话费配件充电器数据线手机壳贴膜移动电源创意配件热门分类全部手机5G手机苹果 iPhone 11iPhone XS Max华为Mate40 Pro 4Gnova 8 Pro 无充Nova8SE 乐活版Mate 40 RSNova 9P50 Pro 4G华为智选手机荣耀荣耀V30 PRO荣耀30 Pro荣耀X10 Max荣耀Play4 Pro小米小米10Redmi K30vivoS10 ProX60Y70t iQOO 8 iQOO Neo5 iQOO Z3OPPOReno 6OPPO K9 Find X3品牌中国移动中国联通中国电信精选店铺京东通信北京移动广东移动宽带专区50M300M优选品牌Anker罗马仕品胜倍思绿联亿色毕亚兹斯泰克热卖爆款移动电源原装充电器散热背夹扩展坞苹果数据线氮化镓Type C信号放大器手游周边王者荣耀手机散热器吃鸡神器弯头线游戏手柄王座同屏器新奇好物氮化镓PD快充双向快充创意配件配件频道海量配件低至9.包邮机身存储16GB8GB4GB分辨率全高清FHD+高清HD+屏幕尺寸5.0英寸及以下5.0~5.49英寸5.5~5.99英寸6.0~6.24英寸有新机游戏手机手机营业厅手机好店以旧换新企业购热卖推荐人气新品限时特惠配件专区摩斯维 适用华为mate40pro手机壳Mate40 Pro保护套真素皮超薄epro全包防摔马特男女 【买家推荐!石墨黑】真皮质感丨贈全屏膜¥59.000度 联想拯救者Y90钢化膜手机膜全屏防蓝光电竞磨砂防反光游戏保护膜防汗防指纹疏油玻璃贴膜 拯救者Y90(AG悦享版)¥99.00漫步者(EDIFIER)W820NB经典版 头戴蓝牙主动降噪耳机 金标认证 蓝牙5.2 手机电脑笔记本耳机 云岩白¥279.00闪魔 苹果13钢化膜 iphone13Promax手机膜mini全屏无边高清抗指纹保护贴膜 苹果13/13Pro【加强版】2片+神器¥19.80声阔Soundcore超能小彩蛋 LifeP3主动降噪真无线TWS入耳式蓝牙耳机适用苹果/华为/小米手机蓝30H续航版¥349.00\n \n \n\n \n \n \n\n \n\n \n \n window.pageConfig = window.pageConfig || {}\n window.pageConfig.o2JSConfig = {\n useTplInJs: true,\n pathRule: function (path) {\n return '//static.360buyimg.com/mtd/pc/cms' + '/floors/' + path + '.min.js'\n }\n }\n \n seajs.use(['//static.360buyimg.com/mtd/pc/base/1.0.1/channel.js'])\n \n seajs.use(['//wl.jd.com/wl.js'])\n \n \n \n !(function () {\n var testObject = {}\n if (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf\n Object.getPrototypeOf = function (object) {\n return object.__proto__ || nativeGetPrototypeOf.call(Object, object)\n }\n }\n })()\n \n \n \n \n \n \n // nerv-create-class 用 'nervjs'\n window.nervjs = Nerv\n // nerv-create-class\n !(function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"nervjs\")):\"function\"==typeof define&&define.amd?define([\"nervjs\"],e):t.NervCreateClass=e(t.nervjs)})(this,(function(t){\"use strict\";function e(t){return t===undefined||null===t}function n(){}function r(t){return\"function\"==typeof t}function o(t){return t===undefined}function i(t,n){for(var r in n)e(n[r])||(t[r]=n[r]);return t}function a(t){for(var e in t){var n=t[e];\"function\"!=typeof n||n.__bound||1===g[e]||((t[e]=n.bind(t)).__bound=!0)}}function c(t,e){void 0===e&&(e={});for(var n=0,r=t.length;n wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n };\n return throttled;\n }\n // Context\n var LingAtomScrollContext = Nerv.createContext({\n scrollTop: 0,\n windowHeight: 0,\n bodyHeight: 0\n })\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n function genComponentElement (type, props, children) {\n \n return Nerv.createElement(\n Lc[type] ? Lc[type].component : 'div',\n props,\n children\n )\n \n }\n \n \n window.Lc = window.Lc || {}\n Lc['Page'] = { component: 'div' }\n \n \n function EventEmitter () {\n var eventEmitterPool = {}\n var eventEmitter = {\n on: function (eventName, handler) {\n eventEmitterPool[eventName] = eventEmitterPool[eventName] || []\n eventEmitterPool[eventName].push(handler)\n },\n trigger: function (eventName) {\n var handlers = eventEmitterPool[eventName] || []\n var args = Array.prototype.slice.call(arguments, 1)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].apply(this, args)\n }\n },\n off: function (eventName, handler) {\n if (!eventEmitterPool[eventName]) return\n if (!handler) {\n eventEmitterPool[eventName] = []\n return\n }\n var handlers = eventEmitterPool[eventName] || []\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n eventEmitterPool[eventName].splice(i, 1)\n break\n }\n }\n }\n }\n return eventEmitter\n }\n var eventEmitter = EventEmitter()\n\n !function () {\n var downloadedBundles = [\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a6__5ee34e5afc685b3ecdd0f087.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a7__5ee34e58fc685b3ecdd0f078.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a8__5ee34e5afc685b3ecdd0f08a.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a9__5fa90cbc7e292cb70199df98.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd594__5ee34e59fc685b3ecdd0f07e.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5aa__5ee34e5bfc685b3ecdd0f094.js\"]\n var body = document.body || document.documentElement\n var Wrap = function (props) {\n return props.children\n }\n // Lazyload Component\n var LazyLoadComponent = NervCreateClass({\n // loading loaded\n status: '',\n getInitialState: function () {\n return {\n status: 'initial'\n }\n },\n updateOffsetTop: function () {\n if (this.state.status !== 'initial') return\n var node = Nerv.findDOMNode(this)\n var rect = node.getBoundingClientRect()\n var winHeight = this.props.__context.windowHeight\n var canLoad = rect.top < winHeight * 1.5 && rect.top + rect.height > -winHeight * 0.5\n if (canLoad) {\n this.downloadScript()\n }\n },\n delayLoaded: function () {\n var that = this\n setTimeout(function () {\n that.setState({ status: 'loaded' })\n }, 500)\n },\n downloadScript: function () {\n var that = this\n var myItem = this.props.item\n if (!myItem.reactBundle || downloadedBundles.indexOf(myItem.reactBundle) !== -1) {\n if (Lc[myItem.type]) {\n this.setState({ status: 'loading' })\n this.delayLoaded()\n } else {\n eventEmitter.on(myItem.type, function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n })\n }\n return\n }\n myItem.reactBundle = myItem.reactBundle && myItem.reactBundle.replace('storage.jd.com', 'storage.360buyimg.com')\n downloadedBundles.push(myItem.reactBundle)\n var element = document.createElement('script')\n element.src = myItem.reactBundle\n element.charset = 'UTF-8'\n body.appendChild(element)\n element.onload = function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n eventEmitter.trigger(myItem.type)\n }\n },\n componentDidMount: function () {\n this.updateOffsetTop()\n },\n componentWillReceiveProps: function (nextProps) {\n this.updateOffsetTop()\n },\n shouldComponentUpdate: function (nextProps, nextState) {\n return this.state.status !== nextState.status\n },\n componentDidCatch: function (error, info) {\n // console.log(error)\n // 上报组件渲染错误\n // @see //talos30011-prelb.o2athena.svc.n.jd.local/api-docs#null%2Fpaths%2F~1report%2Fpost\n var xhr = new XMLHttpRequest()\n xhr.open('POST', 'https://atom-log.3.cn/report', true)\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')\n xhr.send('platform=h5&url=' + location.href + '&cname=' + this.props.item.type + '&project=' + globalData.projectId)\n },\n getWrappedElement: function (extraProps) {\n if (this.WrappedElement) {\n return this.WrappedElement\n }\n var item = this.props.item\n var children = item.props.content || this.props.children || null\n var WrappedElement = genComponentElement(item.type, Object.assign({}, item.props, extraProps), children)\n this.WrappedElement = WrappedElement\n return WrappedElement\n },\n render: function () {\n var that = this\n var status = this.state.status\n // if (status === 'initial' || status === 'loading') {\n if (status === 'initial') {\n return Nerv.createElement(\n 'div',\n {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n }\n // status === 'loading' ?\n // Nerv.createElement(\n // 'div',\n // {\n // style: {\n // width: 0,\n // height: 0,\n // overflow: 'hidden'\n // }\n // },\n // that.getWrappedElement()\n // ) : null\n )\n } else {\n // return that.getWrappedElement()\n // 缺点是多了一层 div\n this.cc = this.cc || that.getWrappedElement()\n return Nerv.createElement(\n 'div',\n status === 'loading' ? {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n } : {},\n this.cc\n )\n }\n }\n })\n\n function createTree (tree) {\n tree = tree.filter(function (item) {\n return item.isShow === undefined || item.isShow === true\n })\n\n return tree.map(function (item) {\n var hasChildren = item.childrens && item.childrens.length\n hasChildren && (item.props.children = createTree(item.childrens))\n if (hasChildren) {\n return genComponentElement(item.type, item.props, item.props.content)\n } else {\n return Nerv.createElement(\n LingAtomScrollContext.Consumer,\n {},\n function (context) {\n return Nerv.createElement(\n LazyLoadComponent,\n {\n item: item,\n __context: context\n }\n )\n }\n )\n }\n })\n }\n\n var App = NervCreateClass({\n getInitialState: function () {\n return {\n scrollTop: 0,\n windowHeight: window.innerHeight,\n bodyHeight: document.body.clientHeight\n }\n },\n componentDidMount: function () {\n var that = this\n window.onscroll = throttle(function () {\n var bodyScrollHeight = document.documentElement.scrollTop || document.body.scrollTop\n that.setState({\n scrollTop: bodyScrollHeight\n })\n }, 200)\n window.onresize = function () {\n var windowInnerHeight = window.innerHeight\n if (windowInnerHeight === that.state.windowHeight) return\n that.setState({\n windowHeight: windowInnerHeight\n })\n }\n function onElementHeightChange (elm, callback) {\n var lastHeight = elm.clientHeight\n var newHeight\n (function run () {\n newHeight = elm.clientHeight\n if (lastHeight !== newHeight) {\n callback(newHeight)\n }\n lastHeight = newHeight\n if (elm.onElementHeightChangeTimer) {\n clearTimeout(elm.onElementHeightChangeTimer)\n }\n elm.onElementHeightChangeTimer = setTimeout(run, 200)\n })()\n }\n onElementHeightChange(document.body, function (h) {\n that.setState({ bodyHeight: h })\n })\n },\n render: function () {\n return Nerv.createElement(\n LingAtomScrollContext.Provider,\n {\n value: this.state\n },\n createTree(window.o2PageConfig.data)\n )\n }\n })\n\n Nerv.render(\n Nerv.createElement(App),\n document.querySelector('#app')\n )\n }()\n \n \n\n\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: /html/body \n"}],"unique_index":"dm351g9ekwlq2nym1s","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/269.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/269.json new file mode 100644 index 0000000..2793a4f --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/269.json @@ -0,0 +1 @@ +{"id":269,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/13/2023, 3:19:13 AM","update_time":"12/13/2023, 3:27:32 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,7],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0}},{"id":-1,"index":3,"parentId":0,"type":1,"option":8,"title":"循环点击单个元素","sequence":[4],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"LeftSide_menu_list__qXCeM\")]/div[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":-1,"index":4,"parentId":3,"type":0,"option":2,"title":"点击手机/数码","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":-1,"index":5,"parentId":0,"type":0,"option":2,"title":"点击手机/数码","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"LeftSide_menu_list__qXCeM\")]/div[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":"不滚动","scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":-1,"index":6,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0}},{"id":2,"index":7,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":"不滚动","scrollCount":1,"scrollWaitTime":1,"clickWay":1,"newTab":"0","maxWaitTime":10,"params":[],"alertHandleType":0}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/27.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/27.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/27.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/27.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/270.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/270.json new file mode 100644 index 0000000..08803fd --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/270.json @@ -0,0 +1 @@ +{"id":270,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/13/2023, 3:41:58 AM","update_time":"12/13/2023, 3:43:29 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n \n \n \n \n \n 京东首页\n \t\t\t\t\t\t\t\t\t\t\t海外 \t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t北京上海天津重庆河北山西河南辽宁吉林黑龙江内蒙古江苏山东安徽浙江福建湖北湖南广东广西江西四川海南贵州云南西藏陕西甘肃青海宁夏新疆港澳台湾钓鱼岛海外 \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t 地区专享版本 \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國港澳 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國台灣 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t京东全球 \t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t Available Sites \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tGlobal Site \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tСайт России \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitus Indonesia \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitio de España \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t เว็บไซต์ประเทศไทย \t\t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t\t\n \n \n 你好,请登录  免费注册\n \n \n \n 我的订单\n \n \n \n \n \n 我的京东\n \n \n \n \n \n \n 京东会员\n \n \n \n \n \n 企业采购\n \n \n \n \n \n 客户服务\n \n \n \n \n \n \n 网站导航\n \n \n \n \n \n \n 手机京东\n \n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n 网站无障碍\n \n \n \n \n \n \n\n \n \n \n (function (window) {\n window.data = window.data || {}\n window.data['cms_header'] = {\n setting: [{\"NAME\":\"手机\",\"URL\":\"//\",\"ANCHOR\":\"\",\"property\":\"\",\"CUSTOM1\":\"#050505\",\"CUSTOM2\":\"\",\"CUSTOM3\":\"\"}]\n }\n })(window)\n \n \n #search-2014 .text {border-color: #050505;}#search-2014 .button {background: #050505;} 京东 手机 全部分类◇ 搜索 >0 我的购物车 \n \n\n \n\n \n \n 顶通组件占位手机分类热门推荐苹果华为荣耀小米vivoOPPO运营商手机卡营业厅充话费配件充电器数据线手机壳贴膜移动电源创意配件热门分类全部手机5G手机苹果 iPhone 11iPhone XS Max华为Mate40 Pro 4Gnova 8 Pro 无充Nova8SE 乐活版Mate 40 RSNova 9P50 Pro 4G华为智选手机荣耀荣耀V30 PRO荣耀30 Pro荣耀X10 Max荣耀Play4 Pro小米小米10Redmi K30vivoS10 ProX60Y70t iQOO 8 iQOO Neo5 iQOO Z3OPPOReno 6OPPO K9 Find X3品牌中国移动中国联通中国电信精选店铺京东通信北京移动广东移动宽带专区50M300M优选品牌Anker罗马仕品胜倍思绿联亿色毕亚兹斯泰克热卖爆款移动电源原装充电器散热背夹扩展坞苹果数据线氮化镓Type C信号放大器手游周边王者荣耀手机散热器吃鸡神器弯头线游戏手柄王座同屏器新奇好物氮化镓PD快充双向快充创意配件配件频道海量配件低至9.包邮机身存储16GB8GB4GB分辨率全高清FHD+高清HD+屏幕尺寸5.0英寸及以下5.0~5.49英寸5.5~5.99英寸6.0~6.24英寸有新机游戏手机手机营业厅手机好店以旧换新企业购热卖推荐人气新品限时特惠配件专区摩斯维 适用华为mate40pro手机壳Mate40 Pro保护套真素皮超薄epro全包防摔马特男女 【买家推荐!石墨黑】真皮质感丨贈全屏膜¥59.000度 联想拯救者Y90钢化膜手机膜全屏防蓝光电竞磨砂防反光游戏保护膜防汗防指纹疏油玻璃贴膜 拯救者Y90(AG悦享版)¥99.00漫步者(EDIFIER)W820NB经典版 头戴蓝牙主动降噪耳机 金标认证 蓝牙5.2 手机电脑笔记本耳机 云岩白¥279.00闪魔 苹果13钢化膜 iphone13Promax手机膜mini全屏无边高清抗指纹保护贴膜 苹果13/13Pro【加强版】2片+神器¥19.80声阔Soundcore超能小彩蛋 LifeP3主动降噪真无线TWS入耳式蓝牙耳机适用苹果/华为/小米手机蓝30H续航版¥349.00\n \n \n\n \n \n \n\n \n\n \n \n window.pageConfig = window.pageConfig || {}\n window.pageConfig.o2JSConfig = {\n useTplInJs: true,\n pathRule: function (path) {\n return '//static.360buyimg.com/mtd/pc/cms' + '/floors/' + path + '.min.js'\n }\n }\n \n seajs.use(['//static.360buyimg.com/mtd/pc/base/1.0.1/channel.js'])\n \n seajs.use(['//wl.jd.com/wl.js'])\n \n \n \n !(function () {\n var testObject = {}\n if (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf\n Object.getPrototypeOf = function (object) {\n return object.__proto__ || nativeGetPrototypeOf.call(Object, object)\n }\n }\n })()\n \n \n \n \n \n \n // nerv-create-class 用 'nervjs'\n window.nervjs = Nerv\n // nerv-create-class\n !(function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"nervjs\")):\"function\"==typeof define&&define.amd?define([\"nervjs\"],e):t.NervCreateClass=e(t.nervjs)})(this,(function(t){\"use strict\";function e(t){return t===undefined||null===t}function n(){}function r(t){return\"function\"==typeof t}function o(t){return t===undefined}function i(t,n){for(var r in n)e(n[r])||(t[r]=n[r]);return t}function a(t){for(var e in t){var n=t[e];\"function\"!=typeof n||n.__bound||1===g[e]||((t[e]=n.bind(t)).__bound=!0)}}function c(t,e){void 0===e&&(e={});for(var n=0,r=t.length;n wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n };\n return throttled;\n }\n // Context\n var LingAtomScrollContext = Nerv.createContext({\n scrollTop: 0,\n windowHeight: 0,\n bodyHeight: 0\n })\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n function genComponentElement (type, props, children) {\n \n return Nerv.createElement(\n Lc[type] ? Lc[type].component : 'div',\n props,\n children\n )\n \n }\n \n \n window.Lc = window.Lc || {}\n Lc['Page'] = { component: 'div' }\n \n \n function EventEmitter () {\n var eventEmitterPool = {}\n var eventEmitter = {\n on: function (eventName, handler) {\n eventEmitterPool[eventName] = eventEmitterPool[eventName] || []\n eventEmitterPool[eventName].push(handler)\n },\n trigger: function (eventName) {\n var handlers = eventEmitterPool[eventName] || []\n var args = Array.prototype.slice.call(arguments, 1)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].apply(this, args)\n }\n },\n off: function (eventName, handler) {\n if (!eventEmitterPool[eventName]) return\n if (!handler) {\n eventEmitterPool[eventName] = []\n return\n }\n var handlers = eventEmitterPool[eventName] || []\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n eventEmitterPool[eventName].splice(i, 1)\n break\n }\n }\n }\n }\n return eventEmitter\n }\n var eventEmitter = EventEmitter()\n\n !function () {\n var downloadedBundles = [\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a6__5ee34e5afc685b3ecdd0f087.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a7__5ee34e58fc685b3ecdd0f078.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a8__5ee34e5afc685b3ecdd0f08a.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a9__5fa90cbc7e292cb70199df98.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd594__5ee34e59fc685b3ecdd0f07e.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5aa__5ee34e5bfc685b3ecdd0f094.js\"]\n var body = document.body || document.documentElement\n var Wrap = function (props) {\n return props.children\n }\n // Lazyload Component\n var LazyLoadComponent = NervCreateClass({\n // loading loaded\n status: '',\n getInitialState: function () {\n return {\n status: 'initial'\n }\n },\n updateOffsetTop: function () {\n if (this.state.status !== 'initial') return\n var node = Nerv.findDOMNode(this)\n var rect = node.getBoundingClientRect()\n var winHeight = this.props.__context.windowHeight\n var canLoad = rect.top < winHeight * 1.5 && rect.top + rect.height > -winHeight * 0.5\n if (canLoad) {\n this.downloadScript()\n }\n },\n delayLoaded: function () {\n var that = this\n setTimeout(function () {\n that.setState({ status: 'loaded' })\n }, 500)\n },\n downloadScript: function () {\n var that = this\n var myItem = this.props.item\n if (!myItem.reactBundle || downloadedBundles.indexOf(myItem.reactBundle) !== -1) {\n if (Lc[myItem.type]) {\n this.setState({ status: 'loading' })\n this.delayLoaded()\n } else {\n eventEmitter.on(myItem.type, function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n })\n }\n return\n }\n myItem.reactBundle = myItem.reactBundle && myItem.reactBundle.replace('storage.jd.com', 'storage.360buyimg.com')\n downloadedBundles.push(myItem.reactBundle)\n var element = document.createElement('script')\n element.src = myItem.reactBundle\n element.charset = 'UTF-8'\n body.appendChild(element)\n element.onload = function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n eventEmitter.trigger(myItem.type)\n }\n },\n componentDidMount: function () {\n this.updateOffsetTop()\n },\n componentWillReceiveProps: function (nextProps) {\n this.updateOffsetTop()\n },\n shouldComponentUpdate: function (nextProps, nextState) {\n return this.state.status !== nextState.status\n },\n componentDidCatch: function (error, info) {\n // console.log(error)\n // 上报组件渲染错误\n // @see //talos30011-prelb.o2athena.svc.n.jd.local/api-docs#null%2Fpaths%2F~1report%2Fpost\n var xhr = new XMLHttpRequest()\n xhr.open('POST', 'https://atom-log.3.cn/report', true)\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')\n xhr.send('platform=h5&url=' + location.href + '&cname=' + this.props.item.type + '&project=' + globalData.projectId)\n },\n getWrappedElement: function (extraProps) {\n if (this.WrappedElement) {\n return this.WrappedElement\n }\n var item = this.props.item\n var children = item.props.content || this.props.children || null\n var WrappedElement = genComponentElement(item.type, Object.assign({}, item.props, extraProps), children)\n this.WrappedElement = WrappedElement\n return WrappedElement\n },\n render: function () {\n var that = this\n var status = this.state.status\n // if (status === 'initial' || status === 'loading') {\n if (status === 'initial') {\n return Nerv.createElement(\n 'div',\n {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n }\n // status === 'loading' ?\n // Nerv.createElement(\n // 'div',\n // {\n // style: {\n // width: 0,\n // height: 0,\n // overflow: 'hidden'\n // }\n // },\n // that.getWrappedElement()\n // ) : null\n )\n } else {\n // return that.getWrappedElement()\n // 缺点是多了一层 div\n this.cc = this.cc || that.getWrappedElement()\n return Nerv.createElement(\n 'div',\n status === 'loading' ? {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n } : {},\n this.cc\n )\n }\n }\n })\n\n function createTree (tree) {\n tree = tree.filter(function (item) {\n return item.isShow === undefined || item.isShow === true\n })\n\n return tree.map(function (item) {\n var hasChildren = item.childrens && item.childrens.length\n hasChildren && (item.props.children = createTree(item.childrens))\n if (hasChildren) {\n return genComponentElement(item.type, item.props, item.props.content)\n } else {\n return Nerv.createElement(\n LingAtomScrollContext.Consumer,\n {},\n function (context) {\n return Nerv.createElement(\n LazyLoadComponent,\n {\n item: item,\n __context: context\n }\n )\n }\n )\n }\n })\n }\n\n var App = NervCreateClass({\n getInitialState: function () {\n return {\n scrollTop: 0,\n windowHeight: window.innerHeight,\n bodyHeight: document.body.clientHeight\n }\n },\n componentDidMount: function () {\n var that = this\n window.onscroll = throttle(function () {\n var bodyScrollHeight = document.documentElement.scrollTop || document.body.scrollTop\n that.setState({\n scrollTop: bodyScrollHeight\n })\n }, 200)\n window.onresize = function () {\n var windowInnerHeight = window.innerHeight\n if (windowInnerHeight === that.state.windowHeight) return\n that.setState({\n windowHeight: windowInnerHeight\n })\n }\n function onElementHeightChange (elm, callback) {\n var lastHeight = elm.clientHeight\n var newHeight\n (function run () {\n newHeight = elm.clientHeight\n if (lastHeight !== newHeight) {\n callback(newHeight)\n }\n lastHeight = newHeight\n if (elm.onElementHeightChangeTimer) {\n clearTimeout(elm.onElementHeightChangeTimer)\n }\n elm.onElementHeightChangeTimer = setTimeout(run, 200)\n })()\n }\n onElementHeightChange(document.body, function (h) {\n that.setState({ bodyHeight: h })\n })\n },\n render: function () {\n return Nerv.createElement(\n LingAtomScrollContext.Provider,\n {\n value: this.state\n },\n createTree(window.o2PageConfig.data)\n )\n }\n })\n\n Nerv.render(\n Nerv.createElement(App),\n document.querySelector('#app')\n )\n }()\n \n \n\n\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: /html/body \n"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[3,4],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":3,"index":3,"parentId":2,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":4,"index":4,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body","allXPaths":["/html/body","//body[contains(., '')]","/html/body"],"exampleValues":[{"num":0,"value":"\n \n \n \n \n \n 京东首页\n \t\t\t\t\t\t\t\t\t\t\t海外 \t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t北京上海天津重庆河北山西河南辽宁吉林黑龙江内蒙古江苏山东安徽浙江福建湖北湖南广东广西江西四川海南贵州云南西藏陕西甘肃青海宁夏新疆港澳台湾钓鱼岛海外 \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t 地区专享版本 \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國港澳 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t中國台灣 \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t京东全球 \t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t Available Sites \t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tGlobal Site \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tСайт России \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitus Indonesia \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\tSitio de España \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t เว็บไซต์ประเทศไทย \t\t\t\t\t\t \t\t\t\t\t \t\t\t\t \t\t\t\t \t\t\t\t\t\n \n \n 你好,请登录  免费注册\n \n \n \n 我的订单\n \n \n \n \n \n 我的京东\n \n \n \n \n \n \n 京东会员\n \n \n \n \n \n 企业采购\n \n \n \n \n \n 客户服务\n \n \n \n \n \n \n 网站导航\n \n \n \n \n \n \n 手机京东\n \n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n 网站无障碍\n \n \n \n \n \n \n\n \n \n \n (function (window) {\n window.data = window.data || {}\n window.data['cms_header'] = {\n setting: [{\"NAME\":\"手机\",\"URL\":\"//\",\"ANCHOR\":\"\",\"property\":\"\",\"CUSTOM1\":\"#050505\",\"CUSTOM2\":\"\",\"CUSTOM3\":\"\"}]\n }\n })(window)\n \n \n #search-2014 .text {border-color: #050505;}#search-2014 .button {background: #050505;} 京东 手机 全部分类◇ 搜索 >0 我的购物车 \n \n\n \n\n \n \n 顶通组件占位手机分类热门推荐苹果华为荣耀小米vivoOPPO运营商手机卡营业厅充话费配件充电器数据线手机壳贴膜移动电源创意配件热门分类全部手机5G手机苹果 iPhone 11iPhone XS Max华为Mate40 Pro 4Gnova 8 Pro 无充Nova8SE 乐活版Mate 40 RSNova 9P50 Pro 4G华为智选手机荣耀荣耀V30 PRO荣耀30 Pro荣耀X10 Max荣耀Play4 Pro小米小米10Redmi K30vivoS10 ProX60Y70t iQOO 8 iQOO Neo5 iQOO Z3OPPOReno 6OPPO K9 Find X3品牌中国移动中国联通中国电信精选店铺京东通信北京移动广东移动宽带专区50M300M优选品牌Anker罗马仕品胜倍思绿联亿色毕亚兹斯泰克热卖爆款移动电源原装充电器散热背夹扩展坞苹果数据线氮化镓Type C信号放大器手游周边王者荣耀手机散热器吃鸡神器弯头线游戏手柄王座同屏器新奇好物氮化镓PD快充双向快充创意配件配件频道海量配件低至9.包邮机身存储16GB8GB4GB分辨率全高清FHD+高清HD+屏幕尺寸5.0英寸及以下5.0~5.49英寸5.5~5.99英寸6.0~6.24英寸有新机游戏手机手机营业厅手机好店以旧换新企业购热卖推荐人气新品限时特惠配件专区摩斯维 适用华为mate40pro手机壳Mate40 Pro保护套真素皮超薄epro全包防摔马特男女 【买家推荐!石墨黑】真皮质感丨贈全屏膜¥59.000度 联想拯救者Y90钢化膜手机膜全屏防蓝光电竞磨砂防反光游戏保护膜防汗防指纹疏油玻璃贴膜 拯救者Y90(AG悦享版)¥99.00漫步者(EDIFIER)W820NB经典版 头戴蓝牙主动降噪耳机 金标认证 蓝牙5.2 手机电脑笔记本耳机 云岩白¥279.00闪魔 苹果13钢化膜 iphone13Promax手机膜mini全屏无边高清抗指纹保护贴膜 苹果13/13Pro【加强版】2片+神器¥19.80声阔Soundcore超能小彩蛋 LifeP3主动降噪真无线TWS入耳式蓝牙耳机适用苹果/华为/小米手机蓝30H续航版¥349.00\n \n \n\n \n \n \n\n \n\n \n \n window.pageConfig = window.pageConfig || {}\n window.pageConfig.o2JSConfig = {\n useTplInJs: true,\n pathRule: function (path) {\n return '//static.360buyimg.com/mtd/pc/cms' + '/floors/' + path + '.min.js'\n }\n }\n \n seajs.use(['//static.360buyimg.com/mtd/pc/base/1.0.1/channel.js'])\n \n seajs.use(['//wl.jd.com/wl.js'])\n \n \n \n !(function () {\n var testObject = {}\n if (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf\n Object.getPrototypeOf = function (object) {\n return object.__proto__ || nativeGetPrototypeOf.call(Object, object)\n }\n }\n })()\n \n \n \n \n \n \n // nerv-create-class 用 'nervjs'\n window.nervjs = Nerv\n // nerv-create-class\n !(function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"nervjs\")):\"function\"==typeof define&&define.amd?define([\"nervjs\"],e):t.NervCreateClass=e(t.nervjs)})(this,(function(t){\"use strict\";function e(t){return t===undefined||null===t}function n(){}function r(t){return\"function\"==typeof t}function o(t){return t===undefined}function i(t,n){for(var r in n)e(n[r])||(t[r]=n[r]);return t}function a(t){for(var e in t){var n=t[e];\"function\"!=typeof n||n.__bound||1===g[e]||((t[e]=n.bind(t)).__bound=!0)}}function c(t,e){void 0===e&&(e={});for(var n=0,r=t.length;n wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n };\n return throttled;\n }\n // Context\n var LingAtomScrollContext = Nerv.createContext({\n scrollTop: 0,\n windowHeight: 0,\n bodyHeight: 0\n })\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n function genComponentElement (type, props, children) {\n \n return Nerv.createElement(\n Lc[type] ? Lc[type].component : 'div',\n props,\n children\n )\n \n }\n \n \n window.Lc = window.Lc || {}\n Lc['Page'] = { component: 'div' }\n \n \n function EventEmitter () {\n var eventEmitterPool = {}\n var eventEmitter = {\n on: function (eventName, handler) {\n eventEmitterPool[eventName] = eventEmitterPool[eventName] || []\n eventEmitterPool[eventName].push(handler)\n },\n trigger: function (eventName) {\n var handlers = eventEmitterPool[eventName] || []\n var args = Array.prototype.slice.call(arguments, 1)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].apply(this, args)\n }\n },\n off: function (eventName, handler) {\n if (!eventEmitterPool[eventName]) return\n if (!handler) {\n eventEmitterPool[eventName] = []\n return\n }\n var handlers = eventEmitterPool[eventName] || []\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n eventEmitterPool[eventName].splice(i, 1)\n break\n }\n }\n }\n }\n return eventEmitter\n }\n var eventEmitter = EventEmitter()\n\n !function () {\n var downloadedBundles = [\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a6__5ee34e5afc685b3ecdd0f087.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a7__5ee34e58fc685b3ecdd0f078.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a8__5ee34e5afc685b3ecdd0f08a.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5a9__5fa90cbc7e292cb70199df98.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd594__5ee34e59fc685b3ecdd0f07e.js\",\"//storage.360buyimg.com/quark-platform/component/standard/5cd436279a6ea5003becd5aa__5ee34e5bfc685b3ecdd0f094.js\"]\n var body = document.body || document.documentElement\n var Wrap = function (props) {\n return props.children\n }\n // Lazyload Component\n var LazyLoadComponent = NervCreateClass({\n // loading loaded\n status: '',\n getInitialState: function () {\n return {\n status: 'initial'\n }\n },\n updateOffsetTop: function () {\n if (this.state.status !== 'initial') return\n var node = Nerv.findDOMNode(this)\n var rect = node.getBoundingClientRect()\n var winHeight = this.props.__context.windowHeight\n var canLoad = rect.top < winHeight * 1.5 && rect.top + rect.height > -winHeight * 0.5\n if (canLoad) {\n this.downloadScript()\n }\n },\n delayLoaded: function () {\n var that = this\n setTimeout(function () {\n that.setState({ status: 'loaded' })\n }, 500)\n },\n downloadScript: function () {\n var that = this\n var myItem = this.props.item\n if (!myItem.reactBundle || downloadedBundles.indexOf(myItem.reactBundle) !== -1) {\n if (Lc[myItem.type]) {\n this.setState({ status: 'loading' })\n this.delayLoaded()\n } else {\n eventEmitter.on(myItem.type, function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n })\n }\n return\n }\n myItem.reactBundle = myItem.reactBundle && myItem.reactBundle.replace('storage.jd.com', 'storage.360buyimg.com')\n downloadedBundles.push(myItem.reactBundle)\n var element = document.createElement('script')\n element.src = myItem.reactBundle\n element.charset = 'UTF-8'\n body.appendChild(element)\n element.onload = function () {\n that.setState({ status: 'loading' })\n that.delayLoaded()\n eventEmitter.trigger(myItem.type)\n }\n },\n componentDidMount: function () {\n this.updateOffsetTop()\n },\n componentWillReceiveProps: function (nextProps) {\n this.updateOffsetTop()\n },\n shouldComponentUpdate: function (nextProps, nextState) {\n return this.state.status !== nextState.status\n },\n componentDidCatch: function (error, info) {\n // console.log(error)\n // 上报组件渲染错误\n // @see //talos30011-prelb.o2athena.svc.n.jd.local/api-docs#null%2Fpaths%2F~1report%2Fpost\n var xhr = new XMLHttpRequest()\n xhr.open('POST', 'https://atom-log.3.cn/report', true)\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')\n xhr.send('platform=h5&url=' + location.href + '&cname=' + this.props.item.type + '&project=' + globalData.projectId)\n },\n getWrappedElement: function (extraProps) {\n if (this.WrappedElement) {\n return this.WrappedElement\n }\n var item = this.props.item\n var children = item.props.content || this.props.children || null\n var WrappedElement = genComponentElement(item.type, Object.assign({}, item.props, extraProps), children)\n this.WrappedElement = WrappedElement\n return WrappedElement\n },\n render: function () {\n var that = this\n var status = this.state.status\n // if (status === 'initial' || status === 'loading') {\n if (status === 'initial') {\n return Nerv.createElement(\n 'div',\n {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n }\n // status === 'loading' ?\n // Nerv.createElement(\n // 'div',\n // {\n // style: {\n // width: 0,\n // height: 0,\n // overflow: 'hidden'\n // }\n // },\n // that.getWrappedElement()\n // ) : null\n )\n } else {\n // return that.getWrappedElement()\n // 缺点是多了一层 div\n this.cc = this.cc || that.getWrappedElement()\n return Nerv.createElement(\n 'div',\n status === 'loading' ? {\n style: {\n padding: '10px',\n backgroundClip: 'content-box',\n minHeight: '256px',\n height: '100%',\n backgroundColor: '#e3e4e5'\n }\n } : {},\n this.cc\n )\n }\n }\n })\n\n function createTree (tree) {\n tree = tree.filter(function (item) {\n return item.isShow === undefined || item.isShow === true\n })\n\n return tree.map(function (item) {\n var hasChildren = item.childrens && item.childrens.length\n hasChildren && (item.props.children = createTree(item.childrens))\n if (hasChildren) {\n return genComponentElement(item.type, item.props, item.props.content)\n } else {\n return Nerv.createElement(\n LingAtomScrollContext.Consumer,\n {},\n function (context) {\n return Nerv.createElement(\n LazyLoadComponent,\n {\n item: item,\n __context: context\n }\n )\n }\n )\n }\n })\n }\n\n var App = NervCreateClass({\n getInitialState: function () {\n return {\n scrollTop: 0,\n windowHeight: window.innerHeight,\n bodyHeight: document.body.clientHeight\n }\n },\n componentDidMount: function () {\n var that = this\n window.onscroll = throttle(function () {\n var bodyScrollHeight = document.documentElement.scrollTop || document.body.scrollTop\n that.setState({\n scrollTop: bodyScrollHeight\n })\n }, 200)\n window.onresize = function () {\n var windowInnerHeight = window.innerHeight\n if (windowInnerHeight === that.state.windowHeight) return\n that.setState({\n windowHeight: windowInnerHeight\n })\n }\n function onElementHeightChange (elm, callback) {\n var lastHeight = elm.clientHeight\n var newHeight\n (function run () {\n newHeight = elm.clientHeight\n if (lastHeight !== newHeight) {\n callback(newHeight)\n }\n lastHeight = newHeight\n if (elm.onElementHeightChangeTimer) {\n clearTimeout(elm.onElementHeightChangeTimer)\n }\n elm.onElementHeightChangeTimer = setTimeout(run, 200)\n })()\n }\n onElementHeightChange(document.body, function (h) {\n that.setState({ bodyHeight: h })\n })\n },\n render: function () {\n return Nerv.createElement(\n LingAtomScrollContext.Provider,\n {\n value: this.state\n },\n createTree(window.o2PageConfig.data)\n )\n }\n })\n\n Nerv.render(\n Nerv.createElement(App),\n document.querySelector('#app')\n )\n }()\n \n \n\n\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: /html/body \n"}],"unique_index":"xqma7qqbzfrlq2r0zcc","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/271.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/271.json new file mode 100644 index 0000000..d80bbe5 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/271.json @@ -0,0 +1 @@ +{"id":271,"name":"弹窗示例","url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","create_time":"12/13/2023, 3:51:03 AM","update_time":"12/13/2023, 3:53:47 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://easyspider.cn/test_pages/alert_test.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/alert_test.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/alert_test.html"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}},{"id":-1,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body[1]/p[eval(\"self.a+1\")]","allXPaths":["//html[1]","//html[contains(., '弹窗示例')]","/html"],"exampleValues":[{"num":0,"value":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"}],"unique_index":"d8of3rzoypelpr7n0qm","iframe":false,"default":"12345","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"alert(eval(\"self.a+2+int('1')\"))","afterJSWaitTime":0,"downloadPic":0}]}},{"id":-1,"index":4,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"self.a = 1\nself.b = \"45\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":-1,"index":5,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"console.log(\"Field[\"参数1_文本\"]Field[\"参数1_文本\"]\")","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":2,"index":6,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/272.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/272.json new file mode 100644 index 0000000..5633cf6 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/272.json @@ -0,0 +1 @@ +{"id":272,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/13/2023, 4:39:20 AM","update_time":"12/13/2023, 4:39:20 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"123","value":"123"},{"id":2,"name":"loopText_2","nodeId":3,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"123124\nt\na\nb\nc","value":"123124\nt\na\nb\nc"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/手机/数码"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/"},{"id":2,"name":"参数3_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":3,"name":"参数4_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"数码"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shuma.jd.com/"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/"},{"id":8,"name":"参数9_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"厨具"},{"id":9,"name":"参数10_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://channel.jd.com/kitchenware.html"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/"},{"id":11,"name":"参数12_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"工业品"},{"id":12,"name":"参数13_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://pro.jd.com/mall/active/2u2DR1dUiK34csAE3DqmcG8aXvUK/index.html"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"123","index":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":3,"index":3,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4,5,7],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"123124\nt\na\nb\nc","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":4,"index":4,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"123124","index":0,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":5,"index":5,"parentId":3,"type":1,"option":8,"title":"循环采集数据","sequence":[6],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":7,"index":6,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"/手机/数码"}],"unique_index":"latwwzlw98elq2t2bcm","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":6,"index":7,"parentId":3,"type":1,"option":8,"title":"循环采集数据","sequence":[8],"isInLoop":true,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":8,"index":8,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/span[1]","allXPaths":["/span[1]","//span[contains(., '/')]","//SPAN[@class='LeftSide_cate_menu_line__vzQu9 LeftSide_fore0__r2Yrl']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/span[last()-1]"],"exampleValues":[{"num":0,"value":"/"}],"unique_index":"/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数3_链接文本","desc":"","relativeXPath":"/a[1]","allXPaths":["/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"],"exampleValues":[{"num":0,"value":"手机"}],"unique_index":"/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数4_链接地址","desc":"","relativeXPath":"/a[1]","allXPaths":["/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"],"exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/span[2]","allXPaths":["/span[2]","//span[contains(., '/')]","//SPAN[@class='LeftSide_cate_menu_line__vzQu9 undefined']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/span"],"exampleValues":[{"num":0,"value":"/"}],"unique_index":"/span[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/a[2]","allXPaths":["/a[2]","//a[contains(., '数码')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a"],"exampleValues":[{"num":0,"value":"数码"}],"unique_index":"/a[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/a[2]","allXPaths":["/a[2]","//a[contains(., '数码')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a"],"exampleValues":[{"num":0,"value":"https://shuma.jd.com/"}],"unique_index":"/a[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/span[3]","allXPaths":["/span[3]","//span[contains(., '/')]","//SPAN[@class='LeftSide_cate_menu_line__vzQu9 undefined']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-9]/span"],"exampleValues":[{"num":3,"value":"/"}],"unique_index":"/span[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数9_链接文本","desc":"","relativeXPath":"/a[3]","allXPaths":["/a[3]","//a[contains(., '厨具')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-9]/a"],"exampleValues":[{"num":3,"value":"厨具"}],"unique_index":"/a[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数10_链接地址","desc":"","relativeXPath":"/a[3]","allXPaths":["/a[3]","//a[contains(., '厨具')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-9]/a"],"exampleValues":[{"num":3,"value":"https://channel.jd.com/kitchenware.html"}],"unique_index":"/a[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/span[4]","allXPaths":["/span[4]","//span[contains(., '/')]","//SPAN[@class='LeftSide_cate_menu_line__vzQu9 undefined']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-8]/span"],"exampleValues":[{"num":4,"value":"/"}],"unique_index":"/span[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数12_链接文本","desc":"","relativeXPath":"/a[4]","allXPaths":["/a[4]","//a[contains(., '工业品')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-8]/a"],"exampleValues":[{"num":4,"value":"工业品"}],"unique_index":"/a[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数13_链接地址","desc":"","relativeXPath":"/a[4]","allXPaths":["/a[4]","//a[contains(., '工业品')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-8]/a"],"exampleValues":[{"num":4,"value":"https://pro.jd.com/mall/active/2u2DR1dUiK34csAE3DqmcG8aXvUK/index.html"}],"unique_index":"/a[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/273.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/273.json new file mode 100644 index 0000000..ea29073 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/273.json @@ -0,0 +1 @@ +{"id":273,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/13/2023, 11:27:58 PM","update_time":"12/13/2023, 11:31:29 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"mysql","saveName":"TE1","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环 - 文本列表","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环 - 单个元素_2","nodeId":5,"nodeName":"循环 - 单个元素","desc":"循环循环 - 单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":1,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":2,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":3,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":4,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":5,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":6,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 文本列表","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"arguments[0].valueeval(\") += \"11\"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环 - 单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//a[contains(., '»')]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"8","code":"return 1","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":-1,"index":13,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[14],"isInLoop":false,"position":2,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":2,"pathList":"//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[2]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[3]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[4]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[5]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[6]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[7]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[8]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[9]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[10]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[11]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[12]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[13]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[14]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[15]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[16]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[17]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[18]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[19]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[20]\n//*[contains(@class, \"speed-table1\")]/tbody[1]/tr[21]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":-1,"index":14,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '3.0')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.0"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-12-12')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-12-1223:41:21"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '38.43')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"38.43"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '76.05')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"76.05"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '22')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"22"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数13_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆克孜勒苏州阿克陶')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"新疆克孜勒苏州阿克陶县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数14_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆克孜勒苏州阿克陶')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CD20231212234122.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/274.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/274.json new file mode 100644 index 0000000..6a6b0f1 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/274.json @@ -0,0 +1 @@ +{"id":274,"name":"中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/14/2023, 7:55:19 AM","update_time":"12/15/2023, 8:08:09 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"browser":"chrome","desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环输入文字","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"12\n15","value":"12\n15"},{"id":2,"name":"loopTimes_循环点击下一页_2","nodeId":7,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":3,"value":3}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.0"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-12-1405:21:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"39.98"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"118.04"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"9"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"河北唐山市遵化市"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231214052111.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环输入文字","sequence":[3,4,7],"isInLoop":false,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":3,"pathList":"","textList":"12\n15","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"12","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":5,"type":1,"option":8,"title":"循环采集数据","sequence":[9,6],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":9,"index":6,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '3.0')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.0"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-12-14')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-12-1405:21:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '39.98')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"39.98"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '118.04')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"118.04"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '9')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"9"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '河北唐山市遵化市')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"河北唐山市遵化市"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '河北唐山市遵化市')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231214052111.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":5,"index":7,"parentId":2,"type":1,"option":8,"title":"循环点击下一页","sequence":[5,8],"isInLoop":true,"position":2,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//a[contains(., '»')]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":3,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":7,"index":8,"parentId":5,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":9,"parentId":6,"type":2,"option":9,"title":"判断条件 - 从左往右依次判断","sequence":[10,11],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":8,"index":10,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"","code":"console.log(document.evaluate(\"./td[5]\", arguments[0], null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue)","waitTime":0},"position":0},{"id":11,"parentId":8,"index":11,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/275.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/275.json new file mode 100644 index 0000000..431a3c6 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/275.json @@ -0,0 +1 @@ +{"id":275,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/14/2023, 7:58:07 AM","update_time":"12/14/2023, 7:58:07 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"loopTimes_循环点击下一页_1","nodeId":3,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"平板電腦爆款耳機手機數據線年貨節"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/手机/数码"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":3,"index":2,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","relativeXPath":"/html/body/div[4]/div[1]/div[4]","allXPaths":["/html/body/div[4]/div[1]/div[4]","//div[contains(., '平板電腦爆款耳機手機')]","id(\"hotwords\")","/html/body/div[last()-7]/div/div"],"exampleValues":[{"num":0,"value":"平板電腦爆款耳機手機數據線年貨節"}],"unique_index":"hb97sxf9p4clq4fm22w","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"参数2_文本","desc":"","relativeXPath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG LeftSide_menu_hover__OCHiO']","/html/body/div[last()-6]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"],"exampleValues":[{"num":0,"value":"/手机/数码"}],"unique_index":"r7b6i5efamplq4fm22w","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":2,"index":3,"parentId":0,"type":1,"option":8,"title":"循环点击下一页","sequence":[2,4],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"logo\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[2]/span[1]/a[1]","//a[contains(., '登录')]","/html/body/div[last()-5]/div/div[last()-4]/div/div/div/div[last()-6]/div/span/a[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击登录","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[2]/span[1]/a[1]","//a[contains(., '登录')]","/html/body/div[last()-5]/div/div[last()-4]/div/div/div/div[last()-6]/div/span/a[last()-1]"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/276.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/276.json new file mode 100644 index 0000000..b198488 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/276.json @@ -0,0 +1 @@ +{"id":-2,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/15/2023, 8:34:05 AM","update_time":"12/15/2023, 8:34:19 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/277.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/277.json new file mode 100644 index 0000000..64cc31c --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/277.json @@ -0,0 +1 @@ +{"id":-2,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/15/2023, 8:34:30 AM","update_time":"12/15/2023, 8:34:30 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/278.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/278.json new file mode 100644 index 0000000..caf7780 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/278.json @@ -0,0 +1 @@ +{"id":278,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/15/2023, 11:36:42 AM","update_time":"12/15/2023, 11:37:59 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_1","nodeId":7,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"自定义参数_1","desc":"","type":"text","recordASField":1,"exampleValue":"自定义值"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":4,"name":"参数5_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":7,"name":"参数8_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":8,"name":"参数9_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":9,"name":"参数10_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[4,3,7],"isInLoop":false,"position":1,"parameters":{"history":6,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":4,"index":3,"parentId":2,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":6,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":3,"index":4,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"自定义参数_1","desc":"","iframe":false,"extractType":0,"relativeXPath":"","recordASField":1,"allXPaths":[],"exampleValues":[{"num":0,"value":"自定义值"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"paraType":"text"}]}},{"id":6,"index":5,"parentId":5,"type":1,"option":8,"title":"循环采集数据","sequence":[6],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '')]","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数5_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数8_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数9_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数10_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-7]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":5,"index":7,"parentId":2,"type":1,"option":8,"title":"循环点击下一页","sequence":[5,8],"isInLoop":true,"position":2,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":7,"index":8,"parentId":5,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/28.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/28.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/28.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/28.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/29.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/29.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/29.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/29.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/292.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/292.json new file mode 100644 index 0000000..c9ccf61 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/292.json @@ -0,0 +1 @@ +{"id":292,"name":"多层嵌套iframe示例 - 主页面","url":"https://easyspider.cn/test_pages/nested_iframe.html","links":"https://easyspider.cn/test_pages/nested_iframe.html","create_time":"12/15/2023, 11:50:44 AM","update_time":"12/15/2023, 12:11:15 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://easyspider.cn/test_pages/nested_iframe.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/nested_iframe.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/nested_iframe.html"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"1","value":"1"},{"id":2,"name":"loopTimes_2","nodeId":6,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.6"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-12-1509:01:17"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"40.84"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"84.13"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"17"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"新疆巴音郭楞州尉犁县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CD20231215090118.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/nested_iframe.html","links":"https://easyspider.cn/test_pages/nested_iframe.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"weidu1\"]","iframe":true,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":true,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":5,"index":4,"parentId":4,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":true,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":7,"index":5,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":true,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '3.6')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.6"}],"unique_index":"/td[1]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-12-15')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-12-1509:01:17"}],"unique_index":"/td[2]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '40.84')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"40.84"}],"unique_index":"/td[3]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '84.13')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"84.13"}],"unique_index":"/td[4]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '17')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"17"}],"unique_index":"/td[5]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆巴音郭楞州尉犁县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"新疆巴音郭楞州尉犁县"}],"unique_index":"/td[6]/a[1]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆巴音郭楞州尉犁县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CD20231215090118.html"}],"unique_index":"/td[6]/a[1]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":true,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":4,"index":6,"parentId":0,"type":1,"option":8,"title":"循环点击下一页","sequence":[4,7],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[10]/a[1]","iframe":true,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":6,"index":7,"parentId":4,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":true,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/293.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/293.json new file mode 100644 index 0000000..4b048e6 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/293.json @@ -0,0 +1 @@ +{"id":293,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/15/2023, 1:04:10 PM","update_time":"12/15/2023, 1:17:18 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"browser":"chrome","desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_1","nodeId":6,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":3,"name":"参数4_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":4,"name":"参数5_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":5,"name":"参数6_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":6,"name":"参数7_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":7,"name":"参数8_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":8,"name":"参数9_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"},{"id":10,"name":"跳过当前循环","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":11,"name":"执行Python代码","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 不固定元素列表","sequence":[8,6],"isInLoop":false,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"//*[@id=\"01\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[2]/a[1]/span[2]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":9,"index":3,"parentId":5,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":7,"index":4,"parentId":4,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":12,"index":5,"parentId":7,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数4_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数5_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数6_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数7_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数8_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数9_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":4,"index":6,"parentId":2,"type":1,"option":8,"title":"循环点击下一页","sequence":[4,7],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":8,"index":7,"parentId":4,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":3,"index":8,"parentId":2,"type":2,"option":9,"title":"判断条件 - 从左往右依次判断","sequence":[11,14],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":3,"index":9,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":-1,"parentId":3,"index":10,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"index":11,"id":5,"parentId":3,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[3],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"","code":"return arguments[0].innerText.length < 3","waitTime":0},"position":0},{"id":-1,"index":12,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[13],"isInLoop":false,"position":1,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]","//div[contains(., '01 哲学')]","//DIV[@class='subject-category']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div[last()-1]/div[last()-11]/div[last()-1]"]}},{"id":-1,"index":13,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数11_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"01 哲学"}],"unique_index":"y4bvlameqalq665424","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"index":14,"id":6,"parentId":3,"type":3,"option":10,"title":"无条件","sequence":[16,15],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":15,"parentId":6,"type":0,"option":5,"title":"跳过当前循环","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":4,"code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":10,"index":16,"parentId":6,"type":0,"option":5,"title":"执行Python代码","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":5,"code":"print(\"skip\")","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/294.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/294.json new file mode 100644 index 0000000..4c60023 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/294.json @@ -0,0 +1 @@ +{"id":294,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/15/2023, 2:16:38 PM","update_time":"12/17/2023, 1:11:04 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"csv","saveName":"TTT","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":true,"browser":"chrome","desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_1","nodeId":6,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":3,"name":"参数4_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":4,"name":"参数5_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":5,"name":"参数6_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":6,"name":"参数7_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":7,"name":"参数8_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":8,"name":"参数9_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"},{"id":10,"name":"跳过当前循环","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":11,"name":"执行Python代码","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 固定元素列表","sequence":[8,6],"isInLoop":false,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":2,"pathList":"//*[@id=\"01\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[15]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[16]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[17]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[18]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[19]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[20]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[21]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[22]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[23]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[24]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[25]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[26]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[27]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[28]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[29]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[30]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[31]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[32]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[33]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[34]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[35]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[36]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[37]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[38]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[5]/a[1]/span[2]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":9,"index":3,"parentId":5,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":7,"index":4,"parentId":4,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":12,"index":5,"parentId":7,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数4_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数5_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数6_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数7_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数8_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数9_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":4,"index":6,"parentId":2,"type":1,"option":8,"title":"循环点击下一页","sequence":[4,7],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":8,"index":7,"parentId":4,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":3,"index":8,"parentId":2,"type":2,"option":9,"title":"判断条件 - 从左往右依次判断","sequence":[11,14],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":3,"index":9,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":-1,"parentId":3,"index":10,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"index":11,"id":5,"parentId":3,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[3],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"","code":"return arguments[0].innerText.length < 3","waitTime":0},"position":0},{"id":-1,"index":12,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[13],"isInLoop":false,"position":1,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]","//div[contains(., '01 哲学')]","//DIV[@class='subject-category']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div[last()-1]/div[last()-11]/div[last()-1]"]}},{"id":-1,"index":13,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数11_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"01 哲学"}],"unique_index":"y4bvlameqalq665424","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"index":14,"id":6,"parentId":3,"type":3,"option":10,"title":"无条件","sequence":[16,15],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":15,"parentId":6,"type":0,"option":5,"title":"跳过当前循环","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":4,"code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":10,"index":16,"parentId":6,"type":0,"option":5,"title":"执行Python代码","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":5,"code":"print(\"skip\")","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":17,"parentId":2,"type":1,"option":8,"title":"循环点击每个元素","sequence":[18],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":2,"pathList":"//*[@id=\"01\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[15]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[16]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[17]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[18]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[19]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[20]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[21]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[22]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[23]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[24]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[25]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[26]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[27]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[28]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[29]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[30]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[31]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[32]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[33]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[34]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[35]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[36]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[37]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[38]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[5]/a[1]/span[2]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":-1,"index":18,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/295.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/295.json new file mode 100644 index 0000000..bd3eb17 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/295.json @@ -0,0 +1 @@ +{"id":295,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/15/2023, 2:19:03 PM","update_time":"12/17/2023, 12:43:20 PM","version":"0.6.0","saveThreshold":1000,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"TTTT","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_1","nodeId":6,"nodeName":"循环点击下一页","desc":"循环循环点击下一页执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":3,"name":"参数4_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":4,"name":"参数5_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":5,"name":"参数6_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":6,"name":"参数7_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":7,"name":"参数8_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":8,"name":"参数9_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环 - 不固定元素列表","sequence":[3,6],"isInLoop":false,"position":1,"parameters":{"history":7,"tabIndex":-1,"useLoop":false,"xpath":"//a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"//*[@id=\"01\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[15]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[16]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[17]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[18]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[19]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[20]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[21]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[22]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[23]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[24]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[25]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[26]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[27]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[28]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[29]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[30]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[31]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[32]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[33]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[34]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[35]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[36]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[37]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[38]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[5]/a[1]/span[2]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":3,"index":3,"parentId":2,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":7,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":5,"index":4,"parentId":4,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":7,"index":5,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数4_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数5_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数6_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数7_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数8_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数9_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-5]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":4,"index":6,"parentId":2,"type":1,"option":8,"title":"循环点击下一页","sequence":[4,7],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":6,"index":7,"parentId":4,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":8,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":-1,"index":8,"parentId":2,"type":2,"option":9,"title":"判断条件 - 从左往右依次判断","sequence":[11,14,19],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":3,"index":9,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":-1,"parentId":3,"index":10,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"index":11,"id":-1,"parentId":3,"type":3,"option":10,"title":"针对当前循环项的JavaScript命令返回值","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":7,"value":"","code":"return arguments[0].innerText.length < 3","waitTime":0},"position":0},{"id":-1,"index":12,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[13],"isInLoop":false,"position":1,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]","//div[contains(., '01 哲学')]","//DIV[@class='subject-category']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div[last()-1]/div[last()-11]/div[last()-1]"]}},{"id":-1,"index":13,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":9,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数11_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"01 哲学"}],"unique_index":"y4bvlameqalq665424","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"index":14,"id":-1,"parentId":3,"type":3,"option":10,"title":"无条件","sequence":[16,15],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":-1,"index":15,"parentId":7,"type":0,"option":5,"title":"跳过当前循环","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":4,"code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":16,"parentId":7,"type":0,"option":5,"title":"执行Python代码","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":5,"code":"print(\"skip\")","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":17,"parentId":2,"type":1,"option":8,"title":"循环点击每个元素","sequence":[18],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":2,"pathList":"//*[@id=\"01\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"02\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"03\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"04\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"05\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"06\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"07\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[11]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[12]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[13]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[14]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[15]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[16]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[17]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[18]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[19]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[20]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[21]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[22]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[23]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[24]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[25]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[26]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[27]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[28]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[29]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[30]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[31]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[32]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[33]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[34]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[35]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[36]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[37]/a[1]/span[2]\n//*[@id=\"08\"]/div[2]/div[38]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"09\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[6]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[7]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[8]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[9]/a[1]/span[2]\n//*[@id=\"10\"]/div[2]/div[10]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"12\"]/div[2]/div[5]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[1]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[2]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[3]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[4]/a[1]/span[2]\n//*[@id=\"13\"]/div[2]/div[5]/a[1]/span[2]","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":-1,"index":18,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"index":19,"id":-1,"parentId":3,"type":3,"option":10,"title":"无条件","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":2}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/296.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/296.json new file mode 100644 index 0000000..f5e4900 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/296.json @@ -0,0 +1 @@ +{"id":296,"name":"wysdemo01","url":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","links":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","create_time":"2023/12/17 09:06:23","update_time":"12/20/2023, 4:00:03 AM","version":"0.6.0","saveThreshold":1,"quitWaitTime":40,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"mysql","saveName":"TTT","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":1,"desc":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","desc":"List of URLs to be collected, separated by \\n for multiple lines","type":"text","exampleValue":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7"},{"id":1,"name":"loopTimes_1","nodeId":2,"nodeName":"循环点击下一页","desc":"Number of loop executions for loop 循环点击下一页, 0 means unlimited loops (until element not found)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"url","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aabf897481d"},{"id":1,"name":"title","desc":"","type":"text","recordASField":1,"exampleValue":"网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”"},{"id":2,"name":"text","desc":"","type":"text","recordASField":1,"exampleValue":"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”\n\t\t\t\t\n\t\t\t\t来源:松江区委组织部    发布时间:2023-12-15 \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t近日,第二届全国人力资源服务业发展大会召开。人力资源是推动社会经济社会发展的第一资源,是战略性新兴产业,也是稳定和扩大就业、提高人力资源利用水平、构建现代化产业体系的重要力量。激荡人力资源“动能”,集聚强国建设“合力”,要凝心聚力、坚定信心,引才聚才、焕发活力,务实合作、优化环境,以人口高质量发展支撑中国式现代化。凝心聚力、坚定信心,促进高质量充分就业。就业是最基本的民生,促进高质量充分就业,是增进民生福祉、提高人民生活品质的根本举措。党的二十大报告提出“促进高质量充分就业”的目标要求,是党中央牢牢把握我国发展的阶段性特征对就业工作作出的重大战略部署。当前,我国人口发展面临新形势、新常态,人力资源丰富仍然是我国的突出优势,人力资源服务业发挥着重要作用。新时代新征程上,要凝心聚力、坚定信心,坚持以习近平新时代中国特色社会主义思想为指导,全面贯彻党的二十大精神,深入贯彻习近平总书记重要指示和党中央决策部署,锚定“稳就业”这一重大政治责任,强化就业优先、促进供需匹配,聚焦创新驱动、推进数字赋能,持续稳存量、扩增量、提质量,全力以赴确保就业局势总体稳定,不断夯实经济社会大局“稳固底座”。引才聚才、焕发活力,提高人力资源开发利用。完善政策体系、壮大行业规模、提高服务水平、优化产业环境……近年来,我国人力资源服务业蓬勃发展、亮点纷呈,实现健康发展,取得长足进步,人力资源质量和利用效率逐步提升,形成了“百花齐放”的良好生态。人才是引领发展的第一动力,是建设现代化经济体系的战略支撑。新时代新征程上,要筑巢引凤、引才聚才、以才吸才,不断焕发新活力、新动能。要着力培养知识型、技能型、创新型的复合型人才,持续打造现代化的人力资源体系,创造更充足的人力资本红利。要适应新经济形态变化,开发、培育、推广新职业,让人才在新时代站上更大舞台、发挥更大作用。要推动“有为政府”与“有效市场”同向发力、共同发力,强化供需匹配度、提高招聘质量水平、提升劳动参与率,激发人力资源服务业的最大效能。务实合作、优化环境,推动人口高质量发展。党的十八大以来,习近平总书记围绕人口发展发表了一系列重要论述,作出了一系列科学判断,强调“中国式现代化是人口规模巨大的现代化”。在今年召开的二十届中央财经委员会第一次会议上,习近平总书记提出了以人口高质量发展支撑中国式现代化的重要论断和工作要求。当前,我们迈上了全面建设社会主义现代化国家新征程,我国人口发展也进入了一个新的阶段。要深刻认识人口发展新形势,科学把握人口高质量发展的深刻内涵,以改革创新推动人口高质量发展,推动人民高品质生活、促进人的全面发展和全体人民共同富裕。要致力务实合作,持续优化人力资源服务业发展环境,深耕党和国家事业发展的重点领域、重点行业,一张蓝图绘到底、一茬接着一茬干,不断展现人力资源服务业新气象、开创发展新局面,为推动高质量发展贡献澎湃力量。(作者单位:松江区委统战部)\n\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<返回>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t上海市党建服务中心\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","links":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击下一页","sequence":[4,3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[2]/div[2]/div[1]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '下一页')]","/html/body/div[last()-6]/div/div[last()-1]/div/div/ul/li[last()-1]/a"]}},{"id":4,"index":3,"parentId":2,"type":0,"option":2,"title":"点击下一页","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[2]/div[2]/div[1]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '下一页')]","/html/body/div[last()-6]/div/div[last()-1]/div/div/ul/li[last()-1]/a"]}},{"id":3,"index":4,"parentId":2,"type":1,"option":8,"title":"循环点击文章标题","sequence":[5,6],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[2]/div[2]/div[1]/div[1]/ul[1]/li/h5[1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":5,"index":5,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":2,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":6,"index":6,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":1.5,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"//a[contains(., '<返回>')]","waitElementTime":15,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":5,"relative":false,"name":"url","desc":"","extractType":0,"relativeXPath":"/html/body","allXPaths":["/html/body","//body[contains(., '')]","/html/body"],"exampleValues":[{"num":0,"value":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aabf897481d"}],"unique_index":"488aw4k05kolq8sgpeo","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":1},{"nodeType":0,"contentType":0,"relative":false,"name":"title","desc":"","extractType":0,"relativeXPath":"/html/body/div[2]/div[1]/div[1]/div[1]/h1[1]","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]/h1[1]","//h1[contains(., '网友夏琴:激荡人力资')]","/html/body/div[last()-6]/div/div[last()-1]/div/h1"],"exampleValues":[{"num":0,"value":"网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”"}],"unique_index":"i8o9o8sk6elq8shcvr","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"text","desc":"","extractType":0,"relativeXPath":"//DIV[@class='artbox']","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]","//div[contains(., '')]","//DIV[@class='artbox']","/html/body/div[last()-6]/div/div[last()-1]/div"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”\n\t\t\t\t\n\t\t\t\t来源:松江区委组织部    发布时间:2023-12-15 \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t近日,第二届全国人力资源服务业发展大会召开。人力资源是推动社会经济社会发展的第一资源,是战略性新兴产业,也是稳定和扩大就业、提高人力资源利用水平、构建现代化产业体系的重要力量。激荡人力资源“动能”,集聚强国建设“合力”,要凝心聚力、坚定信心,引才聚才、焕发活力,务实合作、优化环境,以人口高质量发展支撑中国式现代化。凝心聚力、坚定信心,促进高质量充分就业。就业是最基本的民生,促进高质量充分就业,是增进民生福祉、提高人民生活品质的根本举措。党的二十大报告提出“促进高质量充分就业”的目标要求,是党中央牢牢把握我国发展的阶段性特征对就业工作作出的重大战略部署。当前,我国人口发展面临新形势、新常态,人力资源丰富仍然是我国的突出优势,人力资源服务业发挥着重要作用。新时代新征程上,要凝心聚力、坚定信心,坚持以习近平新时代中国特色社会主义思想为指导,全面贯彻党的二十大精神,深入贯彻习近平总书记重要指示和党中央决策部署,锚定“稳就业”这一重大政治责任,强化就业优先、促进供需匹配,聚焦创新驱动、推进数字赋能,持续稳存量、扩增量、提质量,全力以赴确保就业局势总体稳定,不断夯实经济社会大局“稳固底座”。引才聚才、焕发活力,提高人力资源开发利用。完善政策体系、壮大行业规模、提高服务水平、优化产业环境……近年来,我国人力资源服务业蓬勃发展、亮点纷呈,实现健康发展,取得长足进步,人力资源质量和利用效率逐步提升,形成了“百花齐放”的良好生态。人才是引领发展的第一动力,是建设现代化经济体系的战略支撑。新时代新征程上,要筑巢引凤、引才聚才、以才吸才,不断焕发新活力、新动能。要着力培养知识型、技能型、创新型的复合型人才,持续打造现代化的人力资源体系,创造更充足的人力资本红利。要适应新经济形态变化,开发、培育、推广新职业,让人才在新时代站上更大舞台、发挥更大作用。要推动“有为政府”与“有效市场”同向发力、共同发力,强化供需匹配度、提高招聘质量水平、提升劳动参与率,激发人力资源服务业的最大效能。务实合作、优化环境,推动人口高质量发展。党的十八大以来,习近平总书记围绕人口发展发表了一系列重要论述,作出了一系列科学判断,强调“中国式现代化是人口规模巨大的现代化”。在今年召开的二十届中央财经委员会第一次会议上,习近平总书记提出了以人口高质量发展支撑中国式现代化的重要论断和工作要求。当前,我们迈上了全面建设社会主义现代化国家新征程,我国人口发展也进入了一个新的阶段。要深刻认识人口发展新形势,科学把握人口高质量发展的深刻内涵,以改革创新推动人口高质量发展,推动人民高品质生活、促进人的全面发展和全体人民共同富裕。要致力务实合作,持续优化人力资源服务业发展环境,深耕党和国家事业发展的重点领域、重点行业,一张蓝图绘到底、一茬接着一茬干,不断展现人力资源服务业新气象、开创发展新局面,为推动高质量发展贡献澎湃力量。(作者单位:松江区委统战部)\n\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<返回>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t上海市党建服务中心\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"}],"unique_index":"0tq1bg6rty8lq8sg1i4","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":1}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/297.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/297.json new file mode 100644 index 0000000..3a462aa --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/297.json @@ -0,0 +1 @@ +{"id":297,"name":"wysdemo01","url":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","links":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aaaf2364819","create_time":"12/17/2023, 10:23:09 AM","update_time":"12/17/2023, 10:30:47 AM","version":"0.6.0","saveThreshold":1,"quitWaitTime":40,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aaaf2364819","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aaaf2364819"}],"outputParameters":[{"id":0,"name":"url","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aabf897481d"},{"id":1,"name":"title","desc":"","type":"text","recordASField":1,"exampleValue":"网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”"},{"id":2,"name":"text","desc":"","type":"text","recordASField":1,"exampleValue":"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”\n\t\t\t\t\n\t\t\t\t来源:松江区委组织部    发布时间:2023-12-15 \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t近日,第二届全国人力资源服务业发展大会召开。人力资源是推动社会经济社会发展的第一资源,是战略性新兴产业,也是稳定和扩大就业、提高人力资源利用水平、构建现代化产业体系的重要力量。激荡人力资源“动能”,集聚强国建设“合力”,要凝心聚力、坚定信心,引才聚才、焕发活力,务实合作、优化环境,以人口高质量发展支撑中国式现代化。凝心聚力、坚定信心,促进高质量充分就业。就业是最基本的民生,促进高质量充分就业,是增进民生福祉、提高人民生活品质的根本举措。党的二十大报告提出“促进高质量充分就业”的目标要求,是党中央牢牢把握我国发展的阶段性特征对就业工作作出的重大战略部署。当前,我国人口发展面临新形势、新常态,人力资源丰富仍然是我国的突出优势,人力资源服务业发挥着重要作用。新时代新征程上,要凝心聚力、坚定信心,坚持以习近平新时代中国特色社会主义思想为指导,全面贯彻党的二十大精神,深入贯彻习近平总书记重要指示和党中央决策部署,锚定“稳就业”这一重大政治责任,强化就业优先、促进供需匹配,聚焦创新驱动、推进数字赋能,持续稳存量、扩增量、提质量,全力以赴确保就业局势总体稳定,不断夯实经济社会大局“稳固底座”。引才聚才、焕发活力,提高人力资源开发利用。完善政策体系、壮大行业规模、提高服务水平、优化产业环境……近年来,我国人力资源服务业蓬勃发展、亮点纷呈,实现健康发展,取得长足进步,人力资源质量和利用效率逐步提升,形成了“百花齐放”的良好生态。人才是引领发展的第一动力,是建设现代化经济体系的战略支撑。新时代新征程上,要筑巢引凤、引才聚才、以才吸才,不断焕发新活力、新动能。要着力培养知识型、技能型、创新型的复合型人才,持续打造现代化的人力资源体系,创造更充足的人力资本红利。要适应新经济形态变化,开发、培育、推广新职业,让人才在新时代站上更大舞台、发挥更大作用。要推动“有为政府”与“有效市场”同向发力、共同发力,强化供需匹配度、提高招聘质量水平、提升劳动参与率,激发人力资源服务业的最大效能。务实合作、优化环境,推动人口高质量发展。党的十八大以来,习近平总书记围绕人口发展发表了一系列重要论述,作出了一系列科学判断,强调“中国式现代化是人口规模巨大的现代化”。在今年召开的二十届中央财经委员会第一次会议上,习近平总书记提出了以人口高质量发展支撑中国式现代化的重要论断和工作要求。当前,我们迈上了全面建设社会主义现代化国家新征程,我国人口发展也进入了一个新的阶段。要深刻认识人口发展新形势,科学把握人口高质量发展的深刻内涵,以改革创新推动人口高质量发展,推动人民高品质生活、促进人的全面发展和全体人民共同富裕。要致力务实合作,持续优化人力资源服务业发展环境,深耕党和国家事业发展的重点领域、重点行业,一张蓝图绘到底、一茬接着一茬干,不断展现人力资源服务业新气象、开创发展新局面,为推动高质量发展贡献澎湃力量。(作者单位:松江区委统战部)\n\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<返回>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t上海市党建服务中心\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newestindex!news.action?catalogid=8aafb7055d1da85a015d2f538ea100e7","links":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aaaf2364819","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击下一页","sequence":[3],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[2]/div[2]/div[1]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '下一页')]","/html/body/div[last()-6]/div/div[last()-1]/div/div/ul/li[last()-1]/a"]}},{"id":-1,"index":3,"parentId":3,"type":0,"option":2,"title":"点击下一页","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[2]/div[2]/div[1]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '下一页')]","/html/body/div[last()-6]/div/div[last()-1]/div/div/ul/li[last()-1]/a"]}},{"id":-1,"index":4,"parentId":0,"type":1,"option":8,"title":"循环点击文章标题","sequence":[5],"isInLoop":false,"position":2,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[2]/div[2]/div[1]/div[1]/ul[1]/li/h5[1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":-1,"index":5,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":2,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":2,"index":6,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":1.5,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"//a[contains(., '<返回>')]","waitElementTime":15,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":5,"relative":false,"name":"url","desc":"","extractType":0,"relativeXPath":"/html/body","allXPaths":["/html/body","//body[contains(., '')]","/html/body"],"exampleValues":[{"num":0,"value":"https://www.shjcdj.cn/djWeb/djweb/web/djweb/newestindex/newinfo.action?articleid=ff8080818c64130e018c6aabf897481d"}],"unique_index":"488aw4k05kolq8sgpeo","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"title","desc":"","extractType":0,"relativeXPath":"/html/body/div[2]/div[1]/div[1]/div[1]/h1[1]","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]/h1[1]","//h1[contains(., '网友夏琴:激荡人力资')]","/html/body/div[last()-6]/div/div[last()-1]/div/h1"],"exampleValues":[{"num":0,"value":"网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”"}],"unique_index":"i8o9o8sk6elq8shcvr","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"text","desc":"","extractType":0,"relativeXPath":"//DIV[@class='artbox']","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]","//div[contains(., '')]","//DIV[@class='artbox']","/html/body/div[last()-6]/div/div[last()-1]/div"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t网友夏琴:激荡人力资源“动能” 集聚强国建设“合力”\n\t\t\t\t\n\t\t\t\t来源:松江区委组织部    发布时间:2023-12-15 \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t近日,第二届全国人力资源服务业发展大会召开。人力资源是推动社会经济社会发展的第一资源,是战略性新兴产业,也是稳定和扩大就业、提高人力资源利用水平、构建现代化产业体系的重要力量。激荡人力资源“动能”,集聚强国建设“合力”,要凝心聚力、坚定信心,引才聚才、焕发活力,务实合作、优化环境,以人口高质量发展支撑中国式现代化。凝心聚力、坚定信心,促进高质量充分就业。就业是最基本的民生,促进高质量充分就业,是增进民生福祉、提高人民生活品质的根本举措。党的二十大报告提出“促进高质量充分就业”的目标要求,是党中央牢牢把握我国发展的阶段性特征对就业工作作出的重大战略部署。当前,我国人口发展面临新形势、新常态,人力资源丰富仍然是我国的突出优势,人力资源服务业发挥着重要作用。新时代新征程上,要凝心聚力、坚定信心,坚持以习近平新时代中国特色社会主义思想为指导,全面贯彻党的二十大精神,深入贯彻习近平总书记重要指示和党中央决策部署,锚定“稳就业”这一重大政治责任,强化就业优先、促进供需匹配,聚焦创新驱动、推进数字赋能,持续稳存量、扩增量、提质量,全力以赴确保就业局势总体稳定,不断夯实经济社会大局“稳固底座”。引才聚才、焕发活力,提高人力资源开发利用。完善政策体系、壮大行业规模、提高服务水平、优化产业环境……近年来,我国人力资源服务业蓬勃发展、亮点纷呈,实现健康发展,取得长足进步,人力资源质量和利用效率逐步提升,形成了“百花齐放”的良好生态。人才是引领发展的第一动力,是建设现代化经济体系的战略支撑。新时代新征程上,要筑巢引凤、引才聚才、以才吸才,不断焕发新活力、新动能。要着力培养知识型、技能型、创新型的复合型人才,持续打造现代化的人力资源体系,创造更充足的人力资本红利。要适应新经济形态变化,开发、培育、推广新职业,让人才在新时代站上更大舞台、发挥更大作用。要推动“有为政府”与“有效市场”同向发力、共同发力,强化供需匹配度、提高招聘质量水平、提升劳动参与率,激发人力资源服务业的最大效能。务实合作、优化环境,推动人口高质量发展。党的十八大以来,习近平总书记围绕人口发展发表了一系列重要论述,作出了一系列科学判断,强调“中国式现代化是人口规模巨大的现代化”。在今年召开的二十届中央财经委员会第一次会议上,习近平总书记提出了以人口高质量发展支撑中国式现代化的重要论断和工作要求。当前,我们迈上了全面建设社会主义现代化国家新征程,我国人口发展也进入了一个新的阶段。要深刻认识人口发展新形势,科学把握人口高质量发展的深刻内涵,以改革创新推动人口高质量发展,推动人民高品质生活、促进人的全面发展和全体人民共同富裕。要致力务实合作,持续优化人力资源服务业发展环境,深耕党和国家事业发展的重点领域、重点行业,一张蓝图绘到底、一茬接着一茬干,不断展现人力资源服务业新气象、开创发展新局面,为推动高质量发展贡献澎湃力量。(作者单位:松江区委统战部)\n\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<返回>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t上海市党建服务中心\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"}],"unique_index":"0tq1bg6rty8lq8sg1i4","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/298.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/298.json new file mode 100644 index 0000000..c326630 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/298.json @@ -0,0 +1 @@ +{"id":298,"name":"ZSXQ","url":"https://t.zsxq.com/15aUTk4Oa","links":"https://wx.zsxq.com/dweb2/index/files","create_time":"12/17/2023, 12:12:12 PM","update_time":"12/17/2023, 12:48:48 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","desc":"https://t.zsxq.com/15aUTk4Oa","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://wx.zsxq.com/dweb2/index/files","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://wx.zsxq.com/dweb2/index/files"}],"outputParameters":[{"id":0,"name":"执行JavaScript","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,6],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://t.zsxq.com/15aUTk4Oa","links":"https://wx.zsxq.com/dweb2/index/files","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0}},{"id":-1,"index":3,"parentId":0,"type":0,"option":2,"title":"点击2023程序...","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":15,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"main-content-container\")]/app-topic[3]/div[1]/div[1]/div[1]/app-talk-content[1]/div[1]/app-file-gallery[1]/div[1]/div[2]/div[2]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/app-root[1]/app-index[1]/div[1]/app-topic-flow[1]/div[1]/app-main-content[1]/div[1]/app-topic[3]/div[1]/div[1]/div[1]/app-talk-content[1]/div[1]/app-file-gallery[1]/div[1]/div[2]/div[2]","//div[contains(., '2023程序员人群洞')]","//DIV[@class='file-name']","/html/body/app-root/app-index/div/app-topic-flow/div/app-main-content/div/app-topic[last()-17]/div/div/div[last()-1]/app-talk-content/div/app-file-gallery/div/div/div"]}},{"id":5,"index":4,"parentId":2,"type":0,"option":5,"title":"执行JavaScript","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"document.elementFromPoint(20,20).click();","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":5,"parentId":0,"type":1,"option":8,"title":"循环 - 不固定元素列表","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"/html/body/app-root[1]/app-index[1]/div[1]/app-all-topic-files[1]/div[1]/div[2]/app-joined-group-file[1]/div[1]/div[2]/div","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":2,"index":6,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[7,8,4],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/app-root[1]/app-index[1]/div[1]/app-all-topic-files[1]/div[1]/div[2]/app-joined-group-file[1]/div[1]/div[2]/div","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":3,"index":7,"parentId":2,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":1,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":""}},{"id":4,"index":8,"parentId":2,"type":0,"option":2,"title":"点击下载","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"download\")]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"newTab":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/app-root[1]/app-index[1]/div[1]/app-all-topic-files[1]/div[1]/div[2]/app-joined-group-file[1]/div[1]/app-file-preview[1]/div[1]/div[1]/div[4]/div[5]/div[1]","//div[contains(., '下载')]","//DIV[@class='download']","/html/body/app-root/app-index/div/app-all-topic-files/div/div/app-joined-group-file/div/app-file-preview/div/div/div[last()-2]/div/div"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/299.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/299.json new file mode 100644 index 0000000..0824a34 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/299.json @@ -0,0 +1 @@ +{"id":299,"name":"你永远难以忘记的pool party:用windows线程池的新进程注入技术 - 先知社区","url":"https://xz.aliyun.com/t/13184","links":"https://xz.aliyun.com/t/13184","create_time":"12/19/2023, 8:11:50 PM","update_time":"12/19/2023, 10:08:13 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://xz.aliyun.com/t/13184","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://xz.aliyun.com/t/13184","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://xz.aliyun.com/t/13184"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n \n 你永远难以忘记的pool party:用windows线程池的新进程注入技术\n \n \n \n \n n1ji1 / \n 2023-12-17 22:47:04 / \n \n 发表于山东 / \n \n 浏览数 1051\n \n \n \n \n \n 技术文章\n \n 技术文章\n \n \n \n \n 顶(0)\n \n 踩(0)\n \n \n \n \n 作者:Alon Leviev\n原文链接:Process Injection Using Windows Thread Pools | Safebreach\n在网络攻击期间,攻击者经常通过想漏洞利用和钓鱼等方式来突破目标组织的外部防护。一旦进入,他们就会试图了解内部网络来提升权限和获取或加密数据,但是在这个阶段他们经常要面对目的是识别和防止这类活动的EDR(endpoint detection and response)。为了躲避检测,攻击者会使用进程注入技术,使他们能够将恶意代码注入到系统的合法进程中。恶意代码由目标进程(即那个合法进程)执行,而不是攻击者进程,这会让防守组织难以从取证的角度进行识别和追踪。\n虽然进程注入技术曾经变得很流行,但大多数操作系统和EDR厂商都收紧了安全措施,要么阻止已知技术,要么严格限制其影响。因此,近年来看到的技术越来越少,而那些仍然在野外看到的技术只适用于特定的工艺状态——直到现在。\nSafeBreach Labs 团队着手探索使用 Windows 线程池(Microsoft Windows 操作系统中分析不足的领域)作为进程注入的新型攻击媒介的可行性。在此过程中,我们发现了八种新的进程注入技术,我们称之为 Pool Party 变体,这些技术能够由于完全合法的操作而触发恶意执行。这些技术能够不受任何限制地跨所有流程工作,使其比现有的流程注入技术更灵活。而且,更重要的是,在与五种领先的 EDR 解决方案进行测试时,这些技术被证明是完全无法检测到的。\n下面我们将分享我们的研究背后的详细信息,该研究首次在 Black Hat Europe 2023 上提出。我们首先将简要概述进程注入的工作原理以及端点安全控制如何检测当前已知的技术。然后,我们将解释 Windows 线程池的架构和相关组件,并讨论导致我们成功利用它们开发八种独特的进程注入技术的研究过程。最后,我们将重点介绍我们测试过的 EDR 解决方案,并确定 SafeBreach 如何与更广泛的安全社区共享这些信息,以帮助组织保护自己。\n背景\n进程注入\n作为一种用于在目标进程中执行任意代码的规避技术,进程注入通常由三个函数组成:\n\n分配函数:用于在目标进程上分配内存\n写入函数:用于向分配的内存写入恶意代码\n执行函数:用于执行编写的恶意代码\n\n\n最基本的注入技术将使用 VirtualAllocEX() 进行分配,使用 WriteProcessMemory() 进行写入,并使用 CreateRemoteThread() 执行。这种注入技术(公开称为 CreateRemoteThread 注入)非常简单和强大,但有一个缺点:所有现代 EDR 都可以检测到它。我们的研究试图发现是否有可能创建完全无法检测到的工艺注入技术。\n通过研究CreateRemoteThread 注入这个过程,我们试图了解 EDR 是否可以有效地区分功能的合法使用与恶意使用。我们还想知道 EDR 当前使用的检测方法是否足够通用,可以检测新的和从未见过的过程注入。\nEDR检测方法\n为了回答这些问题,我们需要回顾 EDR 当前针对进程注入采用的检测方法。通过对不同函数的实验,我们得出的结论是,EDR 的检测主要基于执行函数。最重要的是,写入和分配函数(以最基本的形式)不会被检测到。\n\n基于这一发现,如果我们仅基于分配和写入原语创建执行函数会发生什么?此外,如果执行是由合法操作触发的(例如写入合法文件),并且可能在受害者进程上触发 shellcode,该怎么办?这种方式将使过程注入更加难以检测。\nWindows 用户模式线程池\n在寻找有助于实现研究目标的合适组件时,我们遇到了 Windows 用户模式线程池。这最终成为完美的目标,因为:\n\n默认情况下,所有 Windows 进程都有一个线程池,这意味着滥用线程池将适用于所有 Windows 进程。\n工作项和线程池由结构体表示,这样在有分配和写入函数的基础上,会有更多执行内存函数的机会。\n支持多种工作项类型,这意味着更多机会。\n线程池是一个相当复杂的组件,包含内核和用户层代码,这扩大了攻击面。\n\n架构\n线程池由三个不同的工作队列组成,每个队列专用于不同类型的工作项。工作线程在不同的队列上运行,以取消工作项的排队并执行它们。此外,线程池还包含一个工作线程工厂对象,该对象负责管理工作线程。\n\n基于此体系结构,线程池中可能被滥用于进程注入的潜在区域很少:\n\n工作线程工厂(Worker Factories)\n任务队列\nI/O 完成队列\n计时器队列\n\n我们知道,将有效的工作项插入到其中一个队列中将由工作线程执行。除了队列之外,充当工作线程管理器的工作线程工厂可用于接管工作线程。\n攻击工作线程工厂\n工作线程工厂是负责管理线程池工作线程的 Windows 对象。它通过监视活动或阻塞的工作线程来管理工作线程,并根据监视结果创建或终止工作线程。工作线程工厂不执行工作项的任何调度或执行;它的存在是为了确保工作线程的数量足够。\n\n内核公开了 7 个系统调用来与工作线程工厂对象进行交互:\n\nNtCreateWorkerFactory\nNtShutdownWorkerFactory\nNtQueryInformationWorkerFactory\nNtSetInformationWorkerFactory\nNtWorkerFactoryWorkerReady\nNtWaitForWorkViaWorkerFactory\nNtReleaseWorkerFactoryWorker\n\n我们的目的是接管工作线程,相关目标是启动例程。启动例程基本上是工作线程的入口点,通常此例程充当线程池调度程序,负责对工作项进行出列和执行。\n启动例程可以在工作线程工厂创建系统调用中控制,更有趣的是,系统调用接受要为其创建工作器工厂的进程的句柄:\n\n查看内核中系统调用的实现,我们注意到有一个验证,可以确保没有为当前进程以外的进程创建工作线程工厂:\n\n一般来说,系统调用获取一个可能值的参数有点奇怪。所有进程默认都有一个线程池,因此默认有一个工作线程工厂。\n我们可以简单地利用 DuplicateHandle() API 来访问属于目标进程的工作线程工厂,而无需经历创建工作线程工厂的麻烦。\n\n通过访问现有的工作线程工厂,我们无法控制启动例程值,因为该值是恒定的,在对象初始化后无法自然更改。这么说的话,如果我们能确定启动例程值,我们就可以用恶意 shellcode 覆盖例程代码。\n若要获取工作线程工厂信息,可以使用 NtQueryWorkerFactoryInformation 系统调用:\n\n查询系统调用(query system call)可以检索的唯一受支持的信息类是基本工作线程工厂信息:\n\n在这种情况下,这就足够了,因为基本工人线程工厂(worker factory)信息包括启动例程值:\n\n给定启动例程值,我们可以用恶意 shellcode 覆盖启动例程内容。\n启动例程可以保证在某个时间点运行,但如果我们也可以触发它的执行而不是等待它,那就更好了。为此,我们查看了 NtSetInformationWorkerFactory 系统调用:\n\n与查询系统调用相比,set 系统调用支持更多的信息类,最符合我们需求的是 WorkerFactoryThreadMinimum 信息类:\n\n设置的最小工作线程数起码为当前正在运行的线程数 + 1 ,这会导致创建一个新的工作线程,这意味着执行了启动例程:\n\n就这样,我们成功开发了我们的第一个pool party变体。\n攻击线程池\n在攻击线程池时,我们的目标是将工作项插入到目标进程中,因此我们专注于如何将工作项插入到线程池中。我们知道,如果我们正确插入一个工作项,它将由工作线程执行。我们将假设我们已经有权访问目标线程池的工作线程工厂,正如我们在上一节中证明的那样,可以通过复制工作线程工厂句柄来授予此类访问权限。\n工作项类型\n支持的工作项可分为三种类型:\n\n常规工作项,这些工作项由排队 API 调用时立即排队。\n异步工作项,在操作完成时排队,例如,在写入文件操作完成时。\n计时器工作项,这些工作项由排队 API 调用立即排队,但在计时器过期时执行。\n\n\n队列类型\n关于这三种类型的工作项,还有三种队列:\n\n常规工作项排队到任务队列中,驻留在主线程池结构中,即TP_POOL。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n\n\n主线程池结构驻留在进程内存地址空间中的用户模式中,因此可以通过内存写入函数对其队列进行修改。I/O 完成队列是一个 Windows 对象,因此该队列驻留在内核中,并可由其公开的系统调用进行操作。\n辅助结构\n在深入研究每种工作项类型的排队机制之前,请务必注意,工作项回调不是由工作线程直接执行的。相反,每个工作项都有一个帮助程序回调,用于执行工作项回调。排队的结构体是帮助程序结构体。\n\n攻击线程池:TP_WORK\n通过查看TP_WORK工作项结构体,我们发现其帮助程序结构是TP_TASK结构体。我们知道Task结构体是插入到线程池结构体中的任务队列中的内容。\n\n负责提交TP_WORK工作项的 API 名为 SubmitThreadpoolWork。沿着 SubmitThreadpoolWork 的调用链向下,我们到达了名为 TpPostTask 的排队 API。\nTpPostTask API 负责将任务插入到任务队列中,该队列由双向链表表示。它按优先级检索相应的任务队列,并将任务插入到任务队列的尾部。\n\n根据目标进程的线程池结构,我们可以篡改其任务队列,将恶意任务注入其中。若要获取目标进程的线程池结构体,可以使用 NtQueryInformationWorkerFactory。基本 worker factory 信息包括 start 例程的 start 参数,而此 start 参数实质上是指向 TP_POOL 结构体的指针。我们有了第二个pool party变体。\n攻击线程池:TP_IO\n调用队列类型,异步工作项将排队到 I/O 完成队列。I/O 完成队列是一个 Windows 对象,用作已完成 I/O 操作的队列。I/O 操作完成后,通知将插入队列中。\n\n线程池依赖于 I/O 完成队列,以便在异步工作项的操作完成时接收通知。\n注意:微软将 I/O 完成队列称为 I/O 完成端口。此对象本质上是一个内核队列 (KQUEUE),因此为了避免混淆,我们将其称为 I/O 完成队列。\n内核公开了 8 个系统调用,用于与 I/O 完成队列进行交互:\n\nNtCreateIoCompletion\nNtOpenIoCompletion\nNtQueryIoCompletion\nNtQueryIoCompletionEx\nNtSetIoCompletion\nNtSetIoCompletionEx\nNtRemoveIoCompletion\nNtRemoveIoCompletionEx\n\n请记住,NtSetIoCompletion 系统调用用于将通知排队到队列中。我们稍后将回到此系统调用。\n有了一定的 I/O 完成背景,我们可以直接进入异步工作项的排队机制。我们将使用TP_IO工作项作为示例,但请注意,相同的概念适用于其他异步工作项。\nTP_IO工作项是在完成文件操作(如读取和写入)时执行的工作项。TP_IO工作项的辅助结构体(helper structure)是TP_DIRECT结构体,因此我们希望此结构排队到完成队列。\n\n当异步工作项排队到 I/O 完成队列时,我们查找将工作项与线程池的 I/O 完成队列关联的函数。查看 CreateThreadpoolIo 的调用链,我们找到了感兴趣的函数:TpBindFileToDirect 函数。此函数将文件完成队列设置为线程池的 I/O 完成队列,并将文件完成键设置为直接结构:\n\n对文件对象调用 TpBindFileToDirect 会导致文件对象的完成队列指向线程池的 I/O 完成队列,并且完成键指向直接结构。\n\n此时,I/O 完成队列仍为空,因为未对文件执行任何操作。函数调用后对文件执行的任何操作(例如,WriteFile)都会导致完成密钥排队到 I/O 完成队列。\n\n总而言之,异步工作项将排队到 I/O 完成队列,直接结构体是排队的字段。有了目标进程的 I/O 完成队列的句柄,我们就能够将通知排队到它。可以使用 DuplicateHandle API 复制此句柄,类似于我们复制 worker factory句柄的方式。有了这个,我们有了第三个泳池派对变体:\n我们如何插入 ALPC、JOB 和 WAIT 工作项?将执行排队到 I/O 完成队列的任何有效TP_DIRECT结构体。这完全取决于我们如何将TP_DIRECT结构体排入 I/O 完成队列。\n可以通过以下方式之一完成排队:\n\n利用 Windows 对象,类似于TP_IO滥用。这将涉及将对象与目标进程的 I/O 完成队列相关联,然后此对象上的任何操作完成都将对通知进行排队。\n利用 NtSetIoCompletion 将通知直接排入完成队列。\n\n考虑到这一点,我们可以通过将基础 Windows 对象与目标线程池的 I/O 完成队列相关联,并将其完成密钥设置为指向恶意工作项来注入其余的异步工作项,即 TP_WAIT、TP_ALPC 和 TP_JOB。最重要的是,我们可以直接注入恶意TP_DIRECT结构体,而无需通过 Windows 对象对其进行代理,这涉及使用 NtSetIoCompletion 系统调用。这使我们能够创建另外四个泳池派对变体:\n\nPoolParty 变体 4 – 远程TP_WAIT工作项插入\nPoolParty 变体 5 – 远程TP_ALPC工作项插入\nPoolParty 变体 6 – 远程TP_JOB工作项插入\nPoolParty 变体 7 – 远程TP_DIRECT插入\n\n这些变体很特殊,因为执行是由完全合法的操作触发的,例如写入文件、连接到 ALPC 端口、将进程分配给作业对象以及设置事件。\n攻击线程池:TP_TIMER\n首先,在查看计时器工作项的创建和提交 API 时,我们注意到未提供计时器句柄。提交 API SetThreadpoolTimer 接受某些计时器配置(如 DueTime),但尚不清楚实际计时器对象所在的位置。\n\n事实证明,计时器工作项对存放在计时器队列中的现有计时器对象进行操作。调用 SubmitThreadpoolTimer API 后,工作项将插入队列中,并使用用户提供的配置信息来配置存放在队列中的计时器对象。\n\n计时器到期后,将调用出队函数,该函数将工作项从队列中出队并执行它。\n\n一般来说,计时器对象本身不支持在过期时执行回调。您需要知道的是,线程池使用支持计时器的 TP_WAIT 工作项来实现它。因此,如果我们将计时器队列设置为过期,则调用出列函数。现在的问题是,我们如何正确地将计时器排队到队列中?\n计时器和计时器队列之间的连接器是TP_TIMER的 WindowEndLinks 和 WindowStartLinks 字段。\n为了简单起见,我们可以将这两个字段视为双向链表的列表条目。\n\n沿着 SetThreadpoolTimer 的调用链向下,我们到达了名为 TppEnqueueTimer 的排队函数。\n\nTppEnqueueTimer 将TP_TIMER的 WindowStartLinks 插入队列 WindowStart 字段,并将 WindowEndLinks 插入队列 WindowEnd 字段。\n\n\nQueue the timer work item to the timer queue.\n将计时器工作项排队到计时器队列。\nConfigure the timer object residing in the queue.\n配置存放在队列中的计时器对象。\n\n由于这两个操作,一旦计时器对象过期,取消排队函数将执行,取消排队并执行排队的计时器工作项。给定目标进程的线程池结构,我们可以篡改其计时器队列,将恶意计时器工作项注入其中。排队后,我们需要设置队列用于过期的计时器对象。设置计时器需要一个句柄,可以使用 DuplicateHandle API 复制此类句柄。就这样,我们有了第八个泳池派对变体:\n更令人惊讶的是,在设置计时器后,攻击者可以退出进程并从系统中删除其身份。因此,系统看起来很干净,恶意代码仅在计时器用完时才会激活。\n经过测试的 EDR 解决方案\n作为研究过程的一部分,每个 Pool Party 变体都针对五种领先的 EDR 解决方案进行了测试,包括:\n\nPalo Alto Cortex\nSentinelOne EDR\nCrowdStrike Falcon\nMicrosoft Defender For Endpoint\nCybereason EDR\n\n我们实现了 100% 的成功率,因为没有一个 EDR 能够检测或阻止 Pool Party 攻击。我们向每个供应商报告了这些发现,并相信他们正在进行更新以更好地检测这些类型的技术。\n需要注意的是,虽然我们已尽最大努力测试我们可以使用的 EDR 产品,但我们无法测试市场上的每种产品。通过向安全社区提供这些信息,我们希望将恶意行为者利用这些技术的能力降至最低,并为 EDR 供应商和用户提供他们自己立即采取行动所需的知识。\n关键要点\n我们认为,根据这项研究的结果,有一些重要的结论:\n\n尽管 EDR 已经发展,但大多数解决方案目前使用的检测方法无法通用地检测我们在这里开发的新技术工艺注入技术。虽然我们的研究证明了我们如何能够专门滥用线程池,但恶意行为者无疑会以类似的方式找到其他功能来利用。我们认为,对于EDR供应商来说,开发和实施一种通用的检测方法,以主动防御这些可能性至关重要。\n我们还认为,对于各个组织来说,加强对检测异常的关注是很重要的,而不是完全信任仅基于其身份的流程。我们的研究表明,代表受信任的进程执行代码可能不会被 EDR 检测到。这突出表明,必须进行更深入的检查,以确保这些程序所执行业务的合法性。 \n\n结论\n尽管现代 EDR 已经发展到可以检测已知的工艺注入技术,但我们的研究证明,仍然有可能开发出无法检测到并有可能产生毁灭性影响的新技术。老练的威胁行为者将继续探索新的和创新的流程注入方法,安全工具供应商和从业者必须积极主动地防御它们。\n\n \n \n\n \n \n 点击收藏 | 0\n \n \n \n 关注 | 1\n \n \n \n \n \n \n 打赏\n \n \n \n \n \n \n \n \n \n \n 上一篇:致远OA鉴权浅析与wpsAssis...\n \n \n 下一篇:金蝶星空云反序列化漏洞分析\n \n \n \n \n "}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://xz.aliyun.com/t/13184","links":"https://xz.aliyun.com/t/13184","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '')]","//DIV[@class='main-topic']","/html/body/div[last()-3]/div/div[last()-1]/div[last()-3]/div/div"],"exampleValues":[{"num":0,"value":"\n \n 你永远难以忘记的pool party:用windows线程池的新进程注入技术\n \n \n \n \n n1ji1 / \n 2023-12-17 22:47:04 / \n \n 发表于山东 / \n \n 浏览数 1051\n \n \n \n \n \n 技术文章\n \n 技术文章\n \n \n \n \n 顶(0)\n \n 踩(0)\n \n \n \n \n 作者:Alon Leviev\n原文链接:Process Injection Using Windows Thread Pools | Safebreach\n在网络攻击期间,攻击者经常通过想漏洞利用和钓鱼等方式来突破目标组织的外部防护。一旦进入,他们就会试图了解内部网络来提升权限和获取或加密数据,但是在这个阶段他们经常要面对目的是识别和防止这类活动的EDR(endpoint detection and response)。为了躲避检测,攻击者会使用进程注入技术,使他们能够将恶意代码注入到系统的合法进程中。恶意代码由目标进程(即那个合法进程)执行,而不是攻击者进程,这会让防守组织难以从取证的角度进行识别和追踪。\n虽然进程注入技术曾经变得很流行,但大多数操作系统和EDR厂商都收紧了安全措施,要么阻止已知技术,要么严格限制其影响。因此,近年来看到的技术越来越少,而那些仍然在野外看到的技术只适用于特定的工艺状态——直到现在。\nSafeBreach Labs 团队着手探索使用 Windows 线程池(Microsoft Windows 操作系统中分析不足的领域)作为进程注入的新型攻击媒介的可行性。在此过程中,我们发现了八种新的进程注入技术,我们称之为 Pool Party 变体,这些技术能够由于完全合法的操作而触发恶意执行。这些技术能够不受任何限制地跨所有流程工作,使其比现有的流程注入技术更灵活。而且,更重要的是,在与五种领先的 EDR 解决方案进行测试时,这些技术被证明是完全无法检测到的。\n下面我们将分享我们的研究背后的详细信息,该研究首次在 Black Hat Europe 2023 上提出。我们首先将简要概述进程注入的工作原理以及端点安全控制如何检测当前已知的技术。然后,我们将解释 Windows 线程池的架构和相关组件,并讨论导致我们成功利用它们开发八种独特的进程注入技术的研究过程。最后,我们将重点介绍我们测试过的 EDR 解决方案,并确定 SafeBreach 如何与更广泛的安全社区共享这些信息,以帮助组织保护自己。\n背景\n进程注入\n作为一种用于在目标进程中执行任意代码的规避技术,进程注入通常由三个函数组成:\n\n分配函数:用于在目标进程上分配内存\n写入函数:用于向分配的内存写入恶意代码\n执行函数:用于执行编写的恶意代码\n\n\n最基本的注入技术将使用 VirtualAllocEX() 进行分配,使用 WriteProcessMemory() 进行写入,并使用 CreateRemoteThread() 执行。这种注入技术(公开称为 CreateRemoteThread 注入)非常简单和强大,但有一个缺点:所有现代 EDR 都可以检测到它。我们的研究试图发现是否有可能创建完全无法检测到的工艺注入技术。\n通过研究CreateRemoteThread 注入这个过程,我们试图了解 EDR 是否可以有效地区分功能的合法使用与恶意使用。我们还想知道 EDR 当前使用的检测方法是否足够通用,可以检测新的和从未见过的过程注入。\nEDR检测方法\n为了回答这些问题,我们需要回顾 EDR 当前针对进程注入采用的检测方法。通过对不同函数的实验,我们得出的结论是,EDR 的检测主要基于执行函数。最重要的是,写入和分配函数(以最基本的形式)不会被检测到。\n\n基于这一发现,如果我们仅基于分配和写入原语创建执行函数会发生什么?此外,如果执行是由合法操作触发的(例如写入合法文件),并且可能在受害者进程上触发 shellcode,该怎么办?这种方式将使过程注入更加难以检测。\nWindows 用户模式线程池\n在寻找有助于实现研究目标的合适组件时,我们遇到了 Windows 用户模式线程池。这最终成为完美的目标,因为:\n\n默认情况下,所有 Windows 进程都有一个线程池,这意味着滥用线程池将适用于所有 Windows 进程。\n工作项和线程池由结构体表示,这样在有分配和写入函数的基础上,会有更多执行内存函数的机会。\n支持多种工作项类型,这意味着更多机会。\n线程池是一个相当复杂的组件,包含内核和用户层代码,这扩大了攻击面。\n\n架构\n线程池由三个不同的工作队列组成,每个队列专用于不同类型的工作项。工作线程在不同的队列上运行,以取消工作项的排队并执行它们。此外,线程池还包含一个工作线程工厂对象,该对象负责管理工作线程。\n\n基于此体系结构,线程池中可能被滥用于进程注入的潜在区域很少:\n\n工作线程工厂(Worker Factories)\n任务队列\nI/O 完成队列\n计时器队列\n\n我们知道,将有效的工作项插入到其中一个队列中将由工作线程执行。除了队列之外,充当工作线程管理器的工作线程工厂可用于接管工作线程。\n攻击工作线程工厂\n工作线程工厂是负责管理线程池工作线程的 Windows 对象。它通过监视活动或阻塞的工作线程来管理工作线程,并根据监视结果创建或终止工作线程。工作线程工厂不执行工作项的任何调度或执行;它的存在是为了确保工作线程的数量足够。\n\n内核公开了 7 个系统调用来与工作线程工厂对象进行交互:\n\nNtCreateWorkerFactory\nNtShutdownWorkerFactory\nNtQueryInformationWorkerFactory\nNtSetInformationWorkerFactory\nNtWorkerFactoryWorkerReady\nNtWaitForWorkViaWorkerFactory\nNtReleaseWorkerFactoryWorker\n\n我们的目的是接管工作线程,相关目标是启动例程。启动例程基本上是工作线程的入口点,通常此例程充当线程池调度程序,负责对工作项进行出列和执行。\n启动例程可以在工作线程工厂创建系统调用中控制,更有趣的是,系统调用接受要为其创建工作器工厂的进程的句柄:\n\n查看内核中系统调用的实现,我们注意到有一个验证,可以确保没有为当前进程以外的进程创建工作线程工厂:\n\n一般来说,系统调用获取一个可能值的参数有点奇怪。所有进程默认都有一个线程池,因此默认有一个工作线程工厂。\n我们可以简单地利用 DuplicateHandle() API 来访问属于目标进程的工作线程工厂,而无需经历创建工作线程工厂的麻烦。\n\n通过访问现有的工作线程工厂,我们无法控制启动例程值,因为该值是恒定的,在对象初始化后无法自然更改。这么说的话,如果我们能确定启动例程值,我们就可以用恶意 shellcode 覆盖例程代码。\n若要获取工作线程工厂信息,可以使用 NtQueryWorkerFactoryInformation 系统调用:\n\n查询系统调用(query system call)可以检索的唯一受支持的信息类是基本工作线程工厂信息:\n\n在这种情况下,这就足够了,因为基本工人线程工厂(worker factory)信息包括启动例程值:\n\n给定启动例程值,我们可以用恶意 shellcode 覆盖启动例程内容。\n启动例程可以保证在某个时间点运行,但如果我们也可以触发它的执行而不是等待它,那就更好了。为此,我们查看了 NtSetInformationWorkerFactory 系统调用:\n\n与查询系统调用相比,set 系统调用支持更多的信息类,最符合我们需求的是 WorkerFactoryThreadMinimum 信息类:\n\n设置的最小工作线程数起码为当前正在运行的线程数 + 1 ,这会导致创建一个新的工作线程,这意味着执行了启动例程:\n\n就这样,我们成功开发了我们的第一个pool party变体。\n攻击线程池\n在攻击线程池时,我们的目标是将工作项插入到目标进程中,因此我们专注于如何将工作项插入到线程池中。我们知道,如果我们正确插入一个工作项,它将由工作线程执行。我们将假设我们已经有权访问目标线程池的工作线程工厂,正如我们在上一节中证明的那样,可以通过复制工作线程工厂句柄来授予此类访问权限。\n工作项类型\n支持的工作项可分为三种类型:\n\n常规工作项,这些工作项由排队 API 调用时立即排队。\n异步工作项,在操作完成时排队,例如,在写入文件操作完成时。\n计时器工作项,这些工作项由排队 API 调用立即排队,但在计时器过期时执行。\n\n\n队列类型\n关于这三种类型的工作项,还有三种队列:\n\n常规工作项排队到任务队列中,驻留在主线程池结构中,即TP_POOL。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n\n\n主线程池结构驻留在进程内存地址空间中的用户模式中,因此可以通过内存写入函数对其队列进行修改。I/O 完成队列是一个 Windows 对象,因此该队列驻留在内核中,并可由其公开的系统调用进行操作。\n辅助结构\n在深入研究每种工作项类型的排队机制之前,请务必注意,工作项回调不是由工作线程直接执行的。相反,每个工作项都有一个帮助程序回调,用于执行工作项回调。排队的结构体是帮助程序结构体。\n\n攻击线程池:TP_WORK\n通过查看TP_WORK工作项结构体,我们发现其帮助程序结构是TP_TASK结构体。我们知道Task结构体是插入到线程池结构体中的任务队列中的内容。\n\n负责提交TP_WORK工作项的 API 名为 SubmitThreadpoolWork。沿着 SubmitThreadpoolWork 的调用链向下,我们到达了名为 TpPostTask 的排队 API。\nTpPostTask API 负责将任务插入到任务队列中,该队列由双向链表表示。它按优先级检索相应的任务队列,并将任务插入到任务队列的尾部。\n\n根据目标进程的线程池结构,我们可以篡改其任务队列,将恶意任务注入其中。若要获取目标进程的线程池结构体,可以使用 NtQueryInformationWorkerFactory。基本 worker factory 信息包括 start 例程的 start 参数,而此 start 参数实质上是指向 TP_POOL 结构体的指针。我们有了第二个pool party变体。\n攻击线程池:TP_IO\n调用队列类型,异步工作项将排队到 I/O 完成队列。I/O 完成队列是一个 Windows 对象,用作已完成 I/O 操作的队列。I/O 操作完成后,通知将插入队列中。\n\n线程池依赖于 I/O 完成队列,以便在异步工作项的操作完成时接收通知。\n注意:微软将 I/O 完成队列称为 I/O 完成端口。此对象本质上是一个内核队列 (KQUEUE),因此为了避免混淆,我们将其称为 I/O 完成队列。\n内核公开了 8 个系统调用,用于与 I/O 完成队列进行交互:\n\nNtCreateIoCompletion\nNtOpenIoCompletion\nNtQueryIoCompletion\nNtQueryIoCompletionEx\nNtSetIoCompletion\nNtSetIoCompletionEx\nNtRemoveIoCompletion\nNtRemoveIoCompletionEx\n\n请记住,NtSetIoCompletion 系统调用用于将通知排队到队列中。我们稍后将回到此系统调用。\n有了一定的 I/O 完成背景,我们可以直接进入异步工作项的排队机制。我们将使用TP_IO工作项作为示例,但请注意,相同的概念适用于其他异步工作项。\nTP_IO工作项是在完成文件操作(如读取和写入)时执行的工作项。TP_IO工作项的辅助结构体(helper structure)是TP_DIRECT结构体,因此我们希望此结构排队到完成队列。\n\n当异步工作项排队到 I/O 完成队列时,我们查找将工作项与线程池的 I/O 完成队列关联的函数。查看 CreateThreadpoolIo 的调用链,我们找到了感兴趣的函数:TpBindFileToDirect 函数。此函数将文件完成队列设置为线程池的 I/O 完成队列,并将文件完成键设置为直接结构:\n\n对文件对象调用 TpBindFileToDirect 会导致文件对象的完成队列指向线程池的 I/O 完成队列,并且完成键指向直接结构。\n\n此时,I/O 完成队列仍为空,因为未对文件执行任何操作。函数调用后对文件执行的任何操作(例如,WriteFile)都会导致完成密钥排队到 I/O 完成队列。\n\n总而言之,异步工作项将排队到 I/O 完成队列,直接结构体是排队的字段。有了目标进程的 I/O 完成队列的句柄,我们就能够将通知排队到它。可以使用 DuplicateHandle API 复制此句柄,类似于我们复制 worker factory句柄的方式。有了这个,我们有了第三个泳池派对变体:\n我们如何插入 ALPC、JOB 和 WAIT 工作项?将执行排队到 I/O 完成队列的任何有效TP_DIRECT结构体。这完全取决于我们如何将TP_DIRECT结构体排入 I/O 完成队列。\n可以通过以下方式之一完成排队:\n\n利用 Windows 对象,类似于TP_IO滥用。这将涉及将对象与目标进程的 I/O 完成队列相关联,然后此对象上的任何操作完成都将对通知进行排队。\n利用 NtSetIoCompletion 将通知直接排入完成队列。\n\n考虑到这一点,我们可以通过将基础 Windows 对象与目标线程池的 I/O 完成队列相关联,并将其完成密钥设置为指向恶意工作项来注入其余的异步工作项,即 TP_WAIT、TP_ALPC 和 TP_JOB。最重要的是,我们可以直接注入恶意TP_DIRECT结构体,而无需通过 Windows 对象对其进行代理,这涉及使用 NtSetIoCompletion 系统调用。这使我们能够创建另外四个泳池派对变体:\n\nPoolParty 变体 4 – 远程TP_WAIT工作项插入\nPoolParty 变体 5 – 远程TP_ALPC工作项插入\nPoolParty 变体 6 – 远程TP_JOB工作项插入\nPoolParty 变体 7 – 远程TP_DIRECT插入\n\n这些变体很特殊,因为执行是由完全合法的操作触发的,例如写入文件、连接到 ALPC 端口、将进程分配给作业对象以及设置事件。\n攻击线程池:TP_TIMER\n首先,在查看计时器工作项的创建和提交 API 时,我们注意到未提供计时器句柄。提交 API SetThreadpoolTimer 接受某些计时器配置(如 DueTime),但尚不清楚实际计时器对象所在的位置。\n\n事实证明,计时器工作项对存放在计时器队列中的现有计时器对象进行操作。调用 SubmitThreadpoolTimer API 后,工作项将插入队列中,并使用用户提供的配置信息来配置存放在队列中的计时器对象。\n\n计时器到期后,将调用出队函数,该函数将工作项从队列中出队并执行它。\n\n一般来说,计时器对象本身不支持在过期时执行回调。您需要知道的是,线程池使用支持计时器的 TP_WAIT 工作项来实现它。因此,如果我们将计时器队列设置为过期,则调用出列函数。现在的问题是,我们如何正确地将计时器排队到队列中?\n计时器和计时器队列之间的连接器是TP_TIMER的 WindowEndLinks 和 WindowStartLinks 字段。\n为了简单起见,我们可以将这两个字段视为双向链表的列表条目。\n\n沿着 SetThreadpoolTimer 的调用链向下,我们到达了名为 TppEnqueueTimer 的排队函数。\n\nTppEnqueueTimer 将TP_TIMER的 WindowStartLinks 插入队列 WindowStart 字段,并将 WindowEndLinks 插入队列 WindowEnd 字段。\n\n\nQueue the timer work item to the timer queue.\n将计时器工作项排队到计时器队列。\nConfigure the timer object residing in the queue.\n配置存放在队列中的计时器对象。\n\n由于这两个操作,一旦计时器对象过期,取消排队函数将执行,取消排队并执行排队的计时器工作项。给定目标进程的线程池结构,我们可以篡改其计时器队列,将恶意计时器工作项注入其中。排队后,我们需要设置队列用于过期的计时器对象。设置计时器需要一个句柄,可以使用 DuplicateHandle API 复制此类句柄。就这样,我们有了第八个泳池派对变体:\n更令人惊讶的是,在设置计时器后,攻击者可以退出进程并从系统中删除其身份。因此,系统看起来很干净,恶意代码仅在计时器用完时才会激活。\n经过测试的 EDR 解决方案\n作为研究过程的一部分,每个 Pool Party 变体都针对五种领先的 EDR 解决方案进行了测试,包括:\n\nPalo Alto Cortex\nSentinelOne EDR\nCrowdStrike Falcon\nMicrosoft Defender For Endpoint\nCybereason EDR\n\n我们实现了 100% 的成功率,因为没有一个 EDR 能够检测或阻止 Pool Party 攻击。我们向每个供应商报告了这些发现,并相信他们正在进行更新以更好地检测这些类型的技术。\n需要注意的是,虽然我们已尽最大努力测试我们可以使用的 EDR 产品,但我们无法测试市场上的每种产品。通过向安全社区提供这些信息,我们希望将恶意行为者利用这些技术的能力降至最低,并为 EDR 供应商和用户提供他们自己立即采取行动所需的知识。\n关键要点\n我们认为,根据这项研究的结果,有一些重要的结论:\n\n尽管 EDR 已经发展,但大多数解决方案目前使用的检测方法无法通用地检测我们在这里开发的新技术工艺注入技术。虽然我们的研究证明了我们如何能够专门滥用线程池,但恶意行为者无疑会以类似的方式找到其他功能来利用。我们认为,对于EDR供应商来说,开发和实施一种通用的检测方法,以主动防御这些可能性至关重要。\n我们还认为,对于各个组织来说,加强对检测异常的关注是很重要的,而不是完全信任仅基于其身份的流程。我们的研究表明,代表受信任的进程执行代码可能不会被 EDR 检测到。这突出表明,必须进行更深入的检查,以确保这些程序所执行业务的合法性。 \n\n结论\n尽管现代 EDR 已经发展到可以检测已知的工艺注入技术,但我们的研究证明,仍然有可能开发出无法检测到并有可能产生毁灭性影响的新技术。老练的威胁行为者将继续探索新的和创新的流程注入方法,安全工具供应商和从业者必须积极主动地防御它们。\n\n \n \n\n \n \n 点击收藏 | 0\n \n \n \n 关注 | 1\n \n \n \n \n \n \n 打赏\n \n \n \n \n \n \n \n \n \n \n 上一篇:致远OA鉴权浅析与wpsAssis...\n \n \n 下一篇:金蝶星空云反序列化漏洞分析\n \n \n \n \n "}],"unique_index":"7coy19bjd5ulqcb1a2n","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":1}]}},{"id":3,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":3,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body/div[2]/div[1]/div[1]/div[1]/div[1]","allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '')]","//DIV[@class='box-container']","/html/body/div[last()-3]/div/div[last()-1]/div[last()-3]/div"],"exampleValues":[{"num":0,"value":"\n \n \n 你永远难以忘记的pool party:用windows线程池的新进程注入技术\n \n \n \n \n n1ji1 / \n 2023-12-17 22:47:04 / \n \n 发表于山东 / \n \n 浏览数 1104\n \n \n \n \n \n 技术文章\n \n 技术文章\n \n \n \n \n 顶(0)\n \n 踩(0)\n \n \n \n \n 作者:Alon Leviev\n原文链接:Process Injection Using Windows Thread Pools | Safebreach\n在网络攻击期间,攻击者经常通过想漏洞利用和钓鱼等方式来突破目标组织的外部防护。一旦进入,他们就会试图了解内部网络来提升权限和获取或加密数据,但是在这个阶段他们经常要面对目的是识别和防止这类活动的EDR(endpoint detection and response)。为了躲避检测,攻击者会使用进程注入技术,使他们能够将恶意代码注入到系统的合法进程中。恶意代码由目标进程(即那个合法进程)执行,而不是攻击者进程,这会让防守组织难以从取证的角度进行识别和追踪。\n虽然进程注入技术曾经变得很流行,但大多数操作系统和EDR厂商都收紧了安全措施,要么阻止已知技术,要么严格限制其影响。因此,近年来看到的技术越来越少,而那些仍然在野外看到的技术只适用于特定的工艺状态——直到现在。\nSafeBreach Labs 团队着手探索使用 Windows 线程池(Microsoft Windows 操作系统中分析不足的领域)作为进程注入的新型攻击媒介的可行性。在此过程中,我们发现了八种新的进程注入技术,我们称之为 Pool Party 变体,这些技术能够由于完全合法的操作而触发恶意执行。这些技术能够不受任何限制地跨所有流程工作,使其比现有的流程注入技术更灵活。而且,更重要的是,在与五种领先的 EDR 解决方案进行测试时,这些技术被证明是完全无法检测到的。\n下面我们将分享我们的研究背后的详细信息,该研究首次在 Black Hat Europe 2023 上提出。我们首先将简要概述进程注入的工作原理以及端点安全控制如何检测当前已知的技术。然后,我们将解释 Windows 线程池的架构和相关组件,并讨论导致我们成功利用它们开发八种独特的进程注入技术的研究过程。最后,我们将重点介绍我们测试过的 EDR 解决方案,并确定 SafeBreach 如何与更广泛的安全社区共享这些信息,以帮助组织保护自己。\n背景\n进程注入\n作为一种用于在目标进程中执行任意代码的规避技术,进程注入通常由三个函数组成:\n\n分配函数:用于在目标进程上分配内存\n写入函数:用于向分配的内存写入恶意代码\n执行函数:用于执行编写的恶意代码\n\n\n最基本的注入技术将使用 VirtualAllocEX() 进行分配,使用 WriteProcessMemory() 进行写入,并使用 CreateRemoteThread() 执行。这种注入技术(公开称为 CreateRemoteThread 注入)非常简单和强大,但有一个缺点:所有现代 EDR 都可以检测到它。我们的研究试图发现是否有可能创建完全无法检测到的工艺注入技术。\n通过研究CreateRemoteThread 注入这个过程,我们试图了解 EDR 是否可以有效地区分功能的合法使用与恶意使用。我们还想知道 EDR 当前使用的检测方法是否足够通用,可以检测新的和从未见过的过程注入。\nEDR检测方法\n为了回答这些问题,我们需要回顾 EDR 当前针对进程注入采用的检测方法。通过对不同函数的实验,我们得出的结论是,EDR 的检测主要基于执行函数。最重要的是,写入和分配函数(以最基本的形式)不会被检测到。\n\n基于这一发现,如果我们仅基于分配和写入原语创建执行函数会发生什么?此外,如果执行是由合法操作触发的(例如写入合法文件),并且可能在受害者进程上触发 shellcode,该怎么办?这种方式将使过程注入更加难以检测。\nWindows 用户模式线程池\n在寻找有助于实现研究目标的合适组件时,我们遇到了 Windows 用户模式线程池。这最终成为完美的目标,因为:\n\n默认情况下,所有 Windows 进程都有一个线程池,这意味着滥用线程池将适用于所有 Windows 进程。\n工作项和线程池由结构体表示,这样在有分配和写入函数的基础上,会有更多执行内存函数的机会。\n支持多种工作项类型,这意味着更多机会。\n线程池是一个相当复杂的组件,包含内核和用户层代码,这扩大了攻击面。\n\n架构\n线程池由三个不同的工作队列组成,每个队列专用于不同类型的工作项。工作线程在不同的队列上运行,以取消工作项的排队并执行它们。此外,线程池还包含一个工作线程工厂对象,该对象负责管理工作线程。\n\n基于此体系结构,线程池中可能被滥用于进程注入的潜在区域很少:\n\n工作线程工厂(Worker Factories)\n任务队列\nI/O 完成队列\n计时器队列\n\n我们知道,将有效的工作项插入到其中一个队列中将由工作线程执行。除了队列之外,充当工作线程管理器的工作线程工厂可用于接管工作线程。\n攻击工作线程工厂\n工作线程工厂是负责管理线程池工作线程的 Windows 对象。它通过监视活动或阻塞的工作线程来管理工作线程,并根据监视结果创建或终止工作线程。工作线程工厂不执行工作项的任何调度或执行;它的存在是为了确保工作线程的数量足够。\n\n内核公开了 7 个系统调用来与工作线程工厂对象进行交互:\n\nNtCreateWorkerFactory\nNtShutdownWorkerFactory\nNtQueryInformationWorkerFactory\nNtSetInformationWorkerFactory\nNtWorkerFactoryWorkerReady\nNtWaitForWorkViaWorkerFactory\nNtReleaseWorkerFactoryWorker\n\n我们的目的是接管工作线程,相关目标是启动例程。启动例程基本上是工作线程的入口点,通常此例程充当线程池调度程序,负责对工作项进行出列和执行。\n启动例程可以在工作线程工厂创建系统调用中控制,更有趣的是,系统调用接受要为其创建工作器工厂的进程的句柄:\n\n查看内核中系统调用的实现,我们注意到有一个验证,可以确保没有为当前进程以外的进程创建工作线程工厂:\n\n一般来说,系统调用获取一个可能值的参数有点奇怪。所有进程默认都有一个线程池,因此默认有一个工作线程工厂。\n我们可以简单地利用 DuplicateHandle() API 来访问属于目标进程的工作线程工厂,而无需经历创建工作线程工厂的麻烦。\n\n通过访问现有的工作线程工厂,我们无法控制启动例程值,因为该值是恒定的,在对象初始化后无法自然更改。这么说的话,如果我们能确定启动例程值,我们就可以用恶意 shellcode 覆盖例程代码。\n若要获取工作线程工厂信息,可以使用 NtQueryWorkerFactoryInformation 系统调用:\n\n查询系统调用(query system call)可以检索的唯一受支持的信息类是基本工作线程工厂信息:\n\n在这种情况下,这就足够了,因为基本工人线程工厂(worker factory)信息包括启动例程值:\n\n给定启动例程值,我们可以用恶意 shellcode 覆盖启动例程内容。\n启动例程可以保证在某个时间点运行,但如果我们也可以触发它的执行而不是等待它,那就更好了。为此,我们查看了 NtSetInformationWorkerFactory 系统调用:\n\n与查询系统调用相比,set 系统调用支持更多的信息类,最符合我们需求的是 WorkerFactoryThreadMinimum 信息类:\n\n设置的最小工作线程数起码为当前正在运行的线程数 + 1 ,这会导致创建一个新的工作线程,这意味着执行了启动例程:\n\n就这样,我们成功开发了我们的第一个pool party变体。\n攻击线程池\n在攻击线程池时,我们的目标是将工作项插入到目标进程中,因此我们专注于如何将工作项插入到线程池中。我们知道,如果我们正确插入一个工作项,它将由工作线程执行。我们将假设我们已经有权访问目标线程池的工作线程工厂,正如我们在上一节中证明的那样,可以通过复制工作线程工厂句柄来授予此类访问权限。\n工作项类型\n支持的工作项可分为三种类型:\n\n常规工作项,这些工作项由排队 API 调用时立即排队。\n异步工作项,在操作完成时排队,例如,在写入文件操作完成时。\n计时器工作项,这些工作项由排队 API 调用立即排队,但在计时器过期时执行。\n\n\n队列类型\n关于这三种类型的工作项,还有三种队列:\n\n常规工作项排队到任务队列中,驻留在主线程池结构中,即TP_POOL。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n异步工作项将排队到 I/O 完成队列,该队列是一个 Windows 对象。\n\n\n主线程池结构驻留在进程内存地址空间中的用户模式中,因此可以通过内存写入函数对其队列进行修改。I/O 完成队列是一个 Windows 对象,因此该队列驻留在内核中,并可由其公开的系统调用进行操作。\n辅助结构\n在深入研究每种工作项类型的排队机制之前,请务必注意,工作项回调不是由工作线程直接执行的。相反,每个工作项都有一个帮助程序回调,用于执行工作项回调。排队的结构体是帮助程序结构体。\n\n攻击线程池:TP_WORK\n通过查看TP_WORK工作项结构体,我们发现其帮助程序结构是TP_TASK结构体。我们知道Task结构体是插入到线程池结构体中的任务队列中的内容。\n\n负责提交TP_WORK工作项的 API 名为 SubmitThreadpoolWork。沿着 SubmitThreadpoolWork 的调用链向下,我们到达了名为 TpPostTask 的排队 API。\nTpPostTask API 负责将任务插入到任务队列中,该队列由双向链表表示。它按优先级检索相应的任务队列,并将任务插入到任务队列的尾部。\n\n根据目标进程的线程池结构,我们可以篡改其任务队列,将恶意任务注入其中。若要获取目标进程的线程池结构体,可以使用 NtQueryInformationWorkerFactory。基本 worker factory 信息包括 start 例程的 start 参数,而此 start 参数实质上是指向 TP_POOL 结构体的指针。我们有了第二个pool party变体。\n攻击线程池:TP_IO\n调用队列类型,异步工作项将排队到 I/O 完成队列。I/O 完成队列是一个 Windows 对象,用作已完成 I/O 操作的队列。I/O 操作完成后,通知将插入队列中。\n\n线程池依赖于 I/O 完成队列,以便在异步工作项的操作完成时接收通知。\n注意:微软将 I/O 完成队列称为 I/O 完成端口。此对象本质上是一个内核队列 (KQUEUE),因此为了避免混淆,我们将其称为 I/O 完成队列。\n内核公开了 8 个系统调用,用于与 I/O 完成队列进行交互:\n\nNtCreateIoCompletion\nNtOpenIoCompletion\nNtQueryIoCompletion\nNtQueryIoCompletionEx\nNtSetIoCompletion\nNtSetIoCompletionEx\nNtRemoveIoCompletion\nNtRemoveIoCompletionEx\n\n请记住,NtSetIoCompletion 系统调用用于将通知排队到队列中。我们稍后将回到此系统调用。\n有了一定的 I/O 完成背景,我们可以直接进入异步工作项的排队机制。我们将使用TP_IO工作项作为示例,但请注意,相同的概念适用于其他异步工作项。\nTP_IO工作项是在完成文件操作(如读取和写入)时执行的工作项。TP_IO工作项的辅助结构体(helper structure)是TP_DIRECT结构体,因此我们希望此结构排队到完成队列。\n\n当异步工作项排队到 I/O 完成队列时,我们查找将工作项与线程池的 I/O 完成队列关联的函数。查看 CreateThreadpoolIo 的调用链,我们找到了感兴趣的函数:TpBindFileToDirect 函数。此函数将文件完成队列设置为线程池的 I/O 完成队列,并将文件完成键设置为直接结构:\n\n对文件对象调用 TpBindFileToDirect 会导致文件对象的完成队列指向线程池的 I/O 完成队列,并且完成键指向直接结构。\n\n此时,I/O 完成队列仍为空,因为未对文件执行任何操作。函数调用后对文件执行的任何操作(例如,WriteFile)都会导致完成密钥排队到 I/O 完成队列。\n\n总而言之,异步工作项将排队到 I/O 完成队列,直接结构体是排队的字段。有了目标进程的 I/O 完成队列的句柄,我们就能够将通知排队到它。可以使用 DuplicateHandle API 复制此句柄,类似于我们复制 worker factory句柄的方式。有了这个,我们有了第三个泳池派对变体:\n我们如何插入 ALPC、JOB 和 WAIT 工作项?将执行排队到 I/O 完成队列的任何有效TP_DIRECT结构体。这完全取决于我们如何将TP_DIRECT结构体排入 I/O 完成队列。\n可以通过以下方式之一完成排队:\n\n利用 Windows 对象,类似于TP_IO滥用。这将涉及将对象与目标进程的 I/O 完成队列相关联,然后此对象上的任何操作完成都将对通知进行排队。\n利用 NtSetIoCompletion 将通知直接排入完成队列。\n\n考虑到这一点,我们可以通过将基础 Windows 对象与目标线程池的 I/O 完成队列相关联,并将其完成密钥设置为指向恶意工作项来注入其余的异步工作项,即 TP_WAIT、TP_ALPC 和 TP_JOB。最重要的是,我们可以直接注入恶意TP_DIRECT结构体,而无需通过 Windows 对象对其进行代理,这涉及使用 NtSetIoCompletion 系统调用。这使我们能够创建另外四个泳池派对变体:\n\nPoolParty 变体 4 – 远程TP_WAIT工作项插入\nPoolParty 变体 5 – 远程TP_ALPC工作项插入\nPoolParty 变体 6 – 远程TP_JOB工作项插入\nPoolParty 变体 7 – 远程TP_DIRECT插入\n\n这些变体很特殊,因为执行是由完全合法的操作触发的,例如写入文件、连接到 ALPC 端口、将进程分配给作业对象以及设置事件。\n攻击线程池:TP_TIMER\n首先,在查看计时器工作项的创建和提交 API 时,我们注意到未提供计时器句柄。提交 API SetThreadpoolTimer 接受某些计时器配置(如 DueTime),但尚不清楚实际计时器对象所在的位置。\n\n事实证明,计时器工作项对存放在计时器队列中的现有计时器对象进行操作。调用 SubmitThreadpoolTimer API 后,工作项将插入队列中,并使用用户提供的配置信息来配置存放在队列中的计时器对象。\n\n计时器到期后,将调用出队函数,该函数将工作项从队列中出队并执行它。\n\n一般来说,计时器对象本身不支持在过期时执行回调。您需要知道的是,线程池使用支持计时器的 TP_WAIT 工作项来实现它。因此,如果我们将计时器队列设置为过期,则调用出列函数。现在的问题是,我们如何正确地将计时器排队到队列中?\n计时器和计时器队列之间的连接器是TP_TIMER的 WindowEndLinks 和 WindowStartLinks 字段。\n为了简单起见,我们可以将这两个字段视为双向链表的列表条目。\n\n沿着 SetThreadpoolTimer 的调用链向下,我们到达了名为 TppEnqueueTimer 的排队函数。\n\nTppEnqueueTimer 将TP_TIMER的 WindowStartLinks 插入队列 WindowStart 字段,并将 WindowEndLinks 插入队列 WindowEnd 字段。\n\n\nQueue the timer work item to the timer queue.\n将计时器工作项排队到计时器队列。\nConfigure the timer object residing in the queue.\n配置存放在队列中的计时器对象。\n\n由于这两个操作,一旦计时器对象过期,取消排队函数将执行,取消排队并执行排队的计时器工作项。给定目标进程的线程池结构,我们可以篡改其计时器队列,将恶意计时器工作项注入其中。排队后,我们需要设置队列用于过期的计时器对象。设置计时器需要一个句柄,可以使用 DuplicateHandle API 复制此类句柄。就这样,我们有了第八个泳池派对变体:\n更令人惊讶的是,在设置计时器后,攻击者可以退出进程并从系统中删除其身份。因此,系统看起来很干净,恶意代码仅在计时器用完时才会激活。\n经过测试的 EDR 解决方案\n作为研究过程的一部分,每个 Pool Party 变体都针对五种领先的 EDR 解决方案进行了测试,包括:\n\nPalo Alto Cortex\nSentinelOne EDR\nCrowdStrike Falcon\nMicrosoft Defender For Endpoint\nCybereason EDR\n\n我们实现了 100% 的成功率,因为没有一个 EDR 能够检测或阻止 Pool Party 攻击。我们向每个供应商报告了这些发现,并相信他们正在进行更新以更好地检测这些类型的技术。\n需要注意的是,虽然我们已尽最大努力测试我们可以使用的 EDR 产品,但我们无法测试市场上的每种产品。通过向安全社区提供这些信息,我们希望将恶意行为者利用这些技术的能力降至最低,并为 EDR 供应商和用户提供他们自己立即采取行动所需的知识。\n关键要点\n我们认为,根据这项研究的结果,有一些重要的结论:\n\n尽管 EDR 已经发展,但大多数解决方案目前使用的检测方法无法通用地检测我们在这里开发的新技术工艺注入技术。虽然我们的研究证明了我们如何能够专门滥用线程池,但恶意行为者无疑会以类似的方式找到其他功能来利用。我们认为,对于EDR供应商来说,开发和实施一种通用的检测方法,以主动防御这些可能性至关重要。\n我们还认为,对于各个组织来说,加强对检测异常的关注是很重要的,而不是完全信任仅基于其身份的流程。我们的研究表明,代表受信任的进程执行代码可能不会被 EDR 检测到。这突出表明,必须进行更深入的检查,以确保这些程序所执行业务的合法性。 \n\n结论\n尽管现代 EDR 已经发展到可以检测已知的工艺注入技术,但我们的研究证明,仍然有可能开发出无法检测到并有可能产生毁灭性影响的新技术。老练的威胁行为者将继续探索新的和创新的流程注入方法,安全工具供应商和从业者必须积极主动地防御它们。\n\n \n \n\n \n \n 点击收藏 | 0\n \n \n \n 关注 | 1\n \n \n \n \n \n \n 打赏\n \n \n \n \n \n \n \n \n \n \n 上一篇:致远OA鉴权浅析与wpsAssis...\n \n \n 下一篇:金蝶星空云反序列化漏洞分析\n \n \n \n \n \n "}],"unique_index":"go9v2yputr6lqcf64x0","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/3.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/3.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/3.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/3.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/30.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/30.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/30.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/30.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/300.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/300.json new file mode 100644 index 0000000..ff46269 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/300.json @@ -0,0 +1 @@ +{"id":300,"name":"你永远难以忘记的pool party:用windows线程池的新进程注入技术 - 先知社区","url":"https://xz.aliyun.com/t/13184","links":"https://xz.aliyun.com/t/13184","create_time":"12/19/2023, 8:18:48 PM","update_time":"12/19/2023, 8:18:52 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://xz.aliyun.com/t/13184","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://xz.aliyun.com/t/13184","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://xz.aliyun.com/t/13184"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"原文链接:Process Injection Using Windows Thread Pools | Safebreach"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://xz.aliyun.com/t/13184","links":"https://xz.aliyun.com/t/13184","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/p","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"skipCount":0,"allXPaths":["/html/body/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/p[1]","//p[contains(., '作者:Alon Le')]","/html/body/div[last()-3]/div/div[last()-1]/div[last()-3]/div/div/div[last()-2]/p[last()-98]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"原文链接:Process Injection Using Windows Thread Pools | Safebreach"}],"unique_index":"omov61ihv2rlqcba4hj","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/301.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/301.json new file mode 100644 index 0000000..6a460fb --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/301.json @@ -0,0 +1 @@ +{"id":301,"name":"教育学 - 中国科学院文献情报中心期刊分区表升级版","url":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","links":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","create_time":"12/20/2023, 5:28:09 PM","update_time":"12/20/2023, 5:46:10 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022"}],"outputParameters":[{"id":0,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数3_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"REVIEW OF EDUCATIONAL RESEARCH"},{"id":2,"name":"参数4_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/Journal/Detail/247367"},{"id":3,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"review"},{"id":4,"name":"参数6_文本","desc":"","type":"text","recordASField":1,"exampleValue":"0034-6543"},{"id":5,"name":"参数7_文本","desc":"","type":"text","recordASField":1,"exampleValue":"区"},{"id":6,"name":"区号","desc":"","type":"text","recordASField":1,"exampleValue":"自定义值"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","links":"https://advanced.fenqubiao.com/Macro/Journal?name=%E6%95%99%E8%82%B2%E5%AD%A6&year=2022","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/section[2]/div[1]/div[1]/div[1]/div[2]/div[2]/table[1]/tbody[1]/tr[1]/td","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"skipCount":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/section[2]/div[1]/div[1]/div[1]/div[2]/div[2]/table[1]/tbody[1]/tr[1]/td[1]","//td[contains(., '1')]","//TD[@class=' ']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-3]"]}},{"id":-1,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":true,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"区"}],"unique_index":"i0yk4xzxzlqdkmkqr","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0}]}},{"id":2,"index":4,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/section[2]/div[1]/div[1]/div[1]/div[2]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"skipCount":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/section[2]/div[1]/div[1]/div[1]/div[2]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '1REVIEW OF')]","//TR[@class='odd']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]"]}},{"id":3,"index":5,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '1')]","//TD[@class=' ']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数3_链接文本","desc":"","relativeXPath":"/td[2]/a[1]","allXPaths":["/td[2]/a[1]","//a[contains(., 'REVIEW OF')]","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-2]/a"],"exampleValues":[{"num":0,"value":"REVIEW OF EDUCATIONAL RESEARCH"}],"unique_index":"/td[2]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数4_链接地址","desc":"","relativeXPath":"/td[2]/a[1]","allXPaths":["/td[2]/a[1]","//a[contains(., 'REVIEW OF')]","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-2]/a"],"exampleValues":[{"num":0,"value":"/Journal/Detail/247367"}],"unique_index":"/td[2]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., 'review')]","//SPAN[@class='label label-primary box-con']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-2]/span"],"exampleValues":[{"num":0,"value":"review"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数6_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '0034-6543')]","//TD[@class=' ']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"0034-6543"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数7_文本","desc":"","relativeXPath":"/td[4]/span[1]","allXPaths":["/td[4]/span[1]","//span[contains(., '区')]","id(\"c247376\")","//SPAN[@class='class']","/html/body/div[last()-3]/div/div/section/div/div/div/div/div/table/tbody/tr[last()-19]/td/span"],"exampleValues":[{"num":0,"value":"区"}],"unique_index":"/td[4]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":0,"contentType":14,"relative":true,"name":"区号","desc":"","iframe":false,"extractType":0,"relativeXPath":"/td[4]/span[1]","recordASField":1,"allXPaths":[],"exampleValues":[{"num":0,"value":"自定义值"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"data-attr","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"paraType":"text"}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/302.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/302.json new file mode 100644 index 0000000..5a99eb0 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/302.json @@ -0,0 +1 @@ +{"id":302,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/20/2023, 6:12:25 PM","update_time":"12/20/2023, 8:02:48 PM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"skipCount":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":1,"contentType":8,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"qm0ogxs381clqdm7ht8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"qm0ogxs381clqdm7ht8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/303.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/303.json new file mode 100644 index 0000000..95f680a --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/303.json @@ -0,0 +1 @@ +{"id":303,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/22/2023, 12:59:12 AM","update_time":"12/22/2023, 1:06:11 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":1,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"/手机/数码"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环采集数据","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","code":"","waitTime":0,"exitCount":0,"exitElement":"//body","historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"skipCount":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]","//div[contains(., '/手机/数码')]","//DIV[@class='LeftSide_menu_item__SBMWC LeftSide_text_space__2UhbG ']","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":8,"relative":true,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"/手机/数码"}],"unique_index":"gdj5cmlqcevlqfg6f30","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"splitLine":0}]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/304.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/304.json new file mode 100644 index 0000000..d415a84 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/304.json @@ -0,0 +1 @@ +{"id":304,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"22/12/2023, 07:07:34","update_time":"2023-12-22 07:13:38","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/305.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/305.json new file mode 100644 index 0000000..84f5e3d --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/305.json @@ -0,0 +1 @@ +{"id":305,"name":"JD","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"2023-12-22 07:13:58","update_time":"2023-12-22 07:14:27","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/31.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/31.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/31.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/31.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/32.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/32.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/32.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/32.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/33.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/33.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/33.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/33.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/34.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/34.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/34.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/34.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/35.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/35.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/35.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/35.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/36.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/36.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/36.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/36.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/37.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/37.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/37.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/37.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/38.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/38.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/38.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/38.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/39.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/39.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/39.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/39.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/4.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/4.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/4.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/4.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/40.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/40.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/40.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/40.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/41.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/41.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/41.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/41.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/42.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/42.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/42.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/42.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/43.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/43.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/43.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/43.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/44.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/44.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/44.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/44.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/45.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/45.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/45.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/45.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/46.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/46.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/46.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/46.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/47.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/47.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/47.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/47.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/48.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/48.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/48.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/48.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/49.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/49.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/49.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/49.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/5.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/5.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/5.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/5.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/50.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/50.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/50.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/50.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/51.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/51.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/51.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/51.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/52.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/52.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/52.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/52.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/53.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/53.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/53.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/53.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/54.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/54.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/54.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/54.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/55.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/55.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/55.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/55.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/56.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/56.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/56.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/56.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/57.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/57.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/57.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/57.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/58.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/58.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/58.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/58.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/59.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/59.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/59.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/59.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/6.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/6.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/6.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/6.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/60.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/60.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/60.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/60.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/61.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/61.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/61.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/61.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/62.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/62.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/62.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/62.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/63.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/63.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/63.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/63.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/64.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/64.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/64.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/64.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/65.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/65.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/65.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/65.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/66.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/66.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/66.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/66.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/67.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/67.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/67.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/67.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/68.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/68.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/68.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/68.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/69.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/69.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/69.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/69.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/7.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/7.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/7.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/7.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/70.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/70.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/70.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/70.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/71.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/71.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/71.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/71.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/72.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/72.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/72.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/72.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/73.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/73.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/73.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/73.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/74.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/74.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/74.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/74.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/75.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/75.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/75.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/75.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/76.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/76.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/76.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/76.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/77.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/77.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/77.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/77.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/78.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/78.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/78.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/78.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/79.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/79.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/79.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/79.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/8.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/8.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/8.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/8.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/80.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/80.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/80.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/80.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/81.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/81.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/81.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/81.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/82.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/82.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/82.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/82.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/83.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/83.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/83.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/83.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/84.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/84.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/84.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/84.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/85.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/85.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/85.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/85.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/86.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/86.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/86.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/86.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/87.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/87.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/87.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/87.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/88.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/88.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/88.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/88.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/89.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/89.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/89.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/89.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/9.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/9.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/9.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/9.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/90.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/90.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/90.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/90.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/91.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/91.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/91.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/91.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/92.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/92.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/92.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/92.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/93.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/93.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/93.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/93.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/94.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/94.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/94.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/94.json diff --git a/.temp_to_pub/EasySpider_MacOS/Sample Tasks/95.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/95.json new file mode 100644 index 0000000..927cec6 --- /dev/null +++ b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/95.json @@ -0,0 +1 @@ +{"id":95,"name":"详情页+图片","url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","create_time":"5/31/2023, 11:28:40 PM","update_time":"21/12/2023, 14:39:17","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.dongchedi.com/article/7238974191096152615","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.dongchedi.com/article/7238974191096152615\n","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.dongchedi.com/article/7238974191096152615\n"}],"outputParameters":[{"id":0,"name":"参数1_图片页面标题","desc":"","exampleValue":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"},{"id":1,"name":"参数1_文本","desc":"","exampleValue":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"},{"id":2,"name":"参数1_图片地址","desc":"","exampleValue":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":3,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":6,"relative":false,"name":"参数1_图片页面标题","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='zoom']","//IMG[@alt='6月上市/7月开始交付 腾势N7新增两项盲订权益']"],"exampleValues":[{"num":0,"value":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"}],"unique_index":"x9gqjnh9rrlibuxxs5","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"id(\"article\")","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]","//section[contains(., '在此前的上海车展上,')]","id(\"article\")","//SECTION[@class='jsx-3371063651 article-content']"],"exampleValues":[{"num":0,"value":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"}],"unique_index":"t4lzv1jbgl8libuy9uj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":3,"index":3,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"id(\"article\")//img","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]/div[1]/img[1]","//img[contains(., '')]"]}},{"id":4,"index":4,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":0,"relative":true,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"},{"num":1,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/f42b230d05a94aa8ba1b401e51111b46~noop.webp?x-expires=1688138568&x-signature=muye%2BsHfzS2YB19jW8RX3GNCIu4%3D"},{"num":2,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/4e1e272d4a2e4504b028abaa3bd0b602~noop.webp?x-expires=1688138568&x-signature=z32YraHeUVvQ7D73yJWYYTkdeEY%3D"},{"num":3,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/3eb96902ad214f169c30ecdbd0456e76~noop.webp?x-expires=1688138568&x-signature=S6%2BlLKW8fc%2FzSy39gk7p%2BrwVLfw%3D"},{"num":4,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/c16e96f7eed54b6983b6dc064776e9f2~noop.webp?x-expires=1688138568&x-signature=PR2cOC8A1Fd8sb14aBjjIc6FS1w%3D"},{"num":5,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/89bf50f0e23b4dfd8d0c9614f2502f8f~noop.webp?x-expires=1688138568&x-signature=vLP%2BB9Ta5LXHaoOLl%2FJHgK09vbM%3D"},{"num":6,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/59839b2298904b33b0af786a983f7ac8~noop.webp?x-expires=1688138568&x-signature=hg4C25lg0C3C44CQL5thKUcMrAk%3D"}],"unique_index":"8wt7k80ok99libv0xhq","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/96.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/96.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/96.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/96.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/97.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/97.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/97.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/97.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/98.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/98.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/98.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/98.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/99.json b/.temp_to_pub/EasySpider_MacOS/Sample Tasks/99.json similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/99.json rename to .temp_to_pub/EasySpider_MacOS/Sample Tasks/99.json diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Support Author.png b/.temp_to_pub/EasySpider_MacOS/Support Author.png similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/Support Author.png rename to .temp_to_pub/EasySpider_MacOS/Support Author.png diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/myCode.py b/.temp_to_pub/EasySpider_MacOS/myCode.py similarity index 88% rename from .temp_to_pub/EasySpider_MacOS_all_arch/myCode.py rename to .temp_to_pub/EasySpider_MacOS/myCode.py index 80e17f6..36245ed 100644 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/myCode.py +++ b/.temp_to_pub/EasySpider_MacOS/myCode.py @@ -37,8 +37,9 @@ def test(n = 0): # 异常捕获 | Exception capture try: # 使用XPath定位元素并点击浏览器中元素 | Use XPath to locate the element and click the element in the browser - element = self.browser.find_element(By.XPATH, "//*[contains(@class, 'LeftSide_menu_list__qXCeM')]/div[1]/a[1]") # 这里请忽略IDE的报错,因为代码是嵌入到程序中的,IDE无法识别self变量和By变量是正常的 | Please ignore the error reported by the IDE, because the code is embedded in the program, and the IDE cannot recognize that the self variable and By variable are normal - element.click() + element = self.browser.find_element(By.XPATH, "//*[contains(@class, 'LeftSide_menu_list__qXCeM')]/div[1]/a[1]") # 这里请忽略IDE语法报错如找不到self的报错,因为代码是嵌入到程序中的,IDE无法识别self变量和By变量是正常的 | Please ignore the warning reported by the IDE such as "'self' is not defined", because the code is embedded in the program, and the IDE cannot recognize that the self variable and By variable are normal + actions = ActionChains(self.browser) + actions.click(element).perform() print("点击成功|Click success") except ElementClickInterceptedException: # 如果元素被遮挡,点击失败 diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/readme.txt b/.temp_to_pub/EasySpider_MacOS/readme.txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/readme.txt rename to .temp_to_pub/EasySpider_MacOS/readme.txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/支持作者.png b/.temp_to_pub/EasySpider_MacOS/支持作者.png similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/支持作者.png rename to .temp_to_pub/EasySpider_MacOS/支持作者.png diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/浏览器闪退解决方案(点击设计任务后Chrome弹出后立马退出).txt b/.temp_to_pub/EasySpider_MacOS/浏览器闪退解决方案(点击设计任务后Chrome弹出后立马退出).txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/浏览器闪退解决方案(点击设计任务后Chrome弹出后立马退出).txt rename to .temp_to_pub/EasySpider_MacOS/浏览器闪退解决方案(点击设计任务后Chrome弹出后立马退出).txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt b/.temp_to_pub/EasySpider_MacOS/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt similarity index 51% rename from .temp_to_pub/EasySpider_MacOS_all_arch/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt rename to .temp_to_pub/EasySpider_MacOS/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt index 4aa0654..04197c2 100644 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt +++ b/.temp_to_pub/EasySpider_MacOS/第一次打开请看这个(包已损坏,无法验证开发者解决方案).txt @@ -6,8 +6,18 @@ xattr -cr 你的EasySpider.app文件路径 如: -xattr -cr /Users/你的用户名/Downloads/EasySpider_MacOS_all_arch/EasySpider.app +xattr -cr /Users/你的用户名/Downloads/EasySpider_MacOS/EasySpider.app 然后再次尝试打开。 +执行xattr命令时如果出现类似下面的错误可以忽略,执行完成之后即可打开软件: + +xattr: [Errno 13] Permission denied: 'EasySpider.app/Contents/Resources/app/node_modules/node-window-manager/build/node_gyp_bins/python3' + 文件访问权限必须给,麦克风权限完全用不到,作者也不清楚为什么会需要麦克风,因此可以拒绝。 + +任务执行过程中,如果出现类似下面的错误,同样可以忽略: + +Traceback (most recent call last): + File "multiprocessing/resource_tracker.py", line 209, in main +KeyError: '/mp-5dxyey7c' diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/软件使用说明.txt b/.temp_to_pub/EasySpider_MacOS/软件使用说明.txt similarity index 100% rename from .temp_to_pub/EasySpider_MacOS_all_arch/软件使用说明.txt rename to .temp_to_pub/EasySpider_MacOS/软件使用说明.txt diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/easyspider_executestage.py b/.temp_to_pub/EasySpider_MacOS_all_arch/Code/easyspider_executestage.py deleted file mode 100644 index 0b9d20f..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/easyspider_executestage.py +++ /dev/null @@ -1,2207 +0,0 @@ -# -*- coding: utf-8 -*- -# import atexit -import atexit -import copy -import shutil -import string -import undetected_chromedriver as uc -from utils import download_image, get_output_code, isnotnull, lowercase_tags_in_xpath, myMySQL, new_line, \ - on_press_creator, on_release_creator, readCode, replace_field_values, write_to_csv, write_to_excel, write_to_json -from myChrome import MyChrome -from threading import Thread, Event -from PIL import Image -from commandline_config import Config -import os -import csv -from openpyxl import load_workbook, Workbook -import random -from selenium.webdriver import ActionChains -from selenium.webdriver.support.ui import Select -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities -from selenium.common.exceptions import StaleElementReferenceException, InvalidSelectorException -from selenium.common.exceptions import TimeoutException -from selenium.common.exceptions import NoSuchElementException -from selenium.webdriver.common.by import By -from selenium.webdriver.support import expected_conditions as EC -from selenium.webdriver.support.ui import WebDriverWait -from selenium import webdriver -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.chrome.service import Service -from pynput.keyboard import Key, Listener -from datetime import datetime -import io # 遇到错误退出时应执行的代码 -import json -# from lib2to3.pgen2 import driver -import re -# import shutil -import subprocess -import sys -# from urllib import parse -# import base64 -# import hashlib -import time -import requests -from ddddocr import DdddOcr -from urllib.parse import urljoin -from lxml import etree -import onnxruntime - -onnxruntime.set_default_logger_severity(3) # 隐藏onnxruntime的日志 -# import pandas as pd -# import numpy -# import pytesseract -# import uuid -if sys.platform != "darwin": - from myChrome import MyUCChrome -desired_capabilities = DesiredCapabilities.CHROME -desired_capabilities["pageLoadStrategy"] = "none" - - -class BrowserThread(Thread): - def __init__(self, browser_t, id, service, version, event, saveName, config, option): - Thread.__init__(self) - self.logs = io.StringIO() - try: - self.log = bool(service["recordLog"]) - except: - self.log = True - self.browser = browser_t - self.option = option - self.config = config - self.version = version - self.totalSteps = 0 - self.id = id - self.event = event - try: - self.saveName = service["saveName"] # 保存文件的名字 - except: - now = datetime.now() - # 将时间格式化为精确到秒的字符串 - self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S") - self.OUTPUT = "" - self.SAVED = False - self.BREAK = False - self.CONTINUE = False - try: - maximizeWindow = service["maximizeWindow"] - except: - maximizeWindow = 0 - if maximizeWindow == 1: - self.browser.maximize_window() - # 名称设定 - if saveName != "": # 命令行覆盖保存名称 - self.saveName = saveName # 保存文件的名字 - now = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") - self.saveName = self.saveName.replace("current_time", now) - - self.print_and_log("任务ID", id, "的保存文件名为:", self.saveName) - self.print_and_log("Save Name for task ID", id, "is:", self.saveName) - if not os.path.exists("Data/Task_" + str(id)): - os.mkdir("Data/Task_" + str(id)) - if not os.path.exists("Data/Task_" + str(id) + "/" + self.saveName): - os.mkdir("Data/Task_" + str(id) + "/" + - self.saveName) # 创建保存文件夹用来保存截图 - self.getDataStep = 0 - self.startSteps = 0 - try: - startFromExit = service["startFromExit"] # 从上次退出的步骤开始 - if startFromExit == 1: - with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_steps.txt', 'r', - encoding='utf-8-sig') as file_obj: - self.startSteps = int(file_obj.read()) # 读取已执行步数 - except: - pass - if self.startSteps != 0: - self.print_and_log("此模式下,任务ID", self.id, "将从上次退出的步骤开始执行,之前已采集条数为", - self.startSteps, "条。") - self.print_and_log("In this mode, task ID", self.id, - "will start from the last step, before we already collected", self.startSteps, " items.") - else: - self.print_and_log("此模式下,任务ID", self.id, - "将从头开始执行,如果需要从上次退出的步骤开始执行,请在保存任务时设置是否从上次保存位置开始执行为“是”。") - self.print_and_log("In this mode, task ID", self.id, - "will start from the beginning, if you want to start from the last step, please set the option 'start from the last step' to 'yes' when saving the task.") - stealth_path = driver_path[:driver_path.find( - "chromedriver")] + "stealth.min.js" - with open(stealth_path, 'r') as f: - js = f.read() - self.print_and_log("Loading stealth.min.js") - self.browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { - 'source': js}) # TMALL 反扒 - WebDriverWait(self.browser, 10) - self.browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') - path = os.path.join(os.path.abspath("./"), "Data", "Task_" + str(self.id)) - self.paramss = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': path}} - - self.browser.execute("send_command", self.paramss) # 下载地址改变 - # self.browser.get('about:blank') - self.procedure = service["graph"] # 程序执行流程 - try: - self.maxViewLength = service["maxViewLength"] # 最大显示长度 - except: - self.maxViewLength = 15 - try: - self.outputFormat = service["outputFormat"] # 输出格式 - except: - self.outputFormat = "csv" - try: - self.task_version = service["version"] # 任务版本 - if service["version"] >= "0.3.1": # 0.3.1及以上版本以上的EasySpider兼容从0.3.1版本开始的所有版本 - pass - else: # 0.3.1以下版本的EasySpider不兼容0.3.1及以上版本的EasySpider - if service["version"] != version: - self.print_and_log("版本不一致,请使用" + - service["version"] + "版本的EasySpider运行该任务!") - self.print_and_log("Version not match, please use EasySpider " + - service["version"] + " to run this task!") - self.browser.quit() - sys.exit() - except: # 0.2.0版本没有version字段,所以直接退出 - self.print_and_log("版本不一致,请使用v0.2.0版本的EasySpider运行该任务!") - self.print_and_log( - "Version not match, please use EasySpider v0.2.0 to run this task!") - self.browser.quit() - sys.exit() - try: - self.save_threshold = service["saveThreshold"] # 保存最低阈值 - except: - self.save_threshold = 10 - try: - self.links = list( - filter(isnotnull, service["links"].split("\n"))) # 要执行的link的列表 - except: - self.links = list(filter(isnotnull, service["url"])) # 要执行的link - self.OUTPUT = [] # 采集的数据 - self.writeMode = 1 # 写入模式,0为新建,1为追加 - if self.outputFormat == "csv" or self.outputFormat == "txt" or self.outputFormat == "xlsx": - if not os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.' + self.outputFormat): - self.OUTPUT.append([]) # 添加表头 - self.writeMode = 0 - elif self.outputFormat == "json": - self.writeMode = 3 # JSON模式无需判断是否存在文件 - elif self.outputFormat == "mysql": - self.mysql = myMySQL(config["mysql_config_path"]) - self.mysql.create_table(self.saveName, service["outputParameters"]) - self.writeMode = 2 - if self.writeMode == 0: - self.print_and_log("新建模式|Create Mode") - elif self.writeMode == 1: - self.print_and_log("追加模式|Append Mode") - elif self.writeMode == 2: - self.print_and_log("MySQL模式|MySQL Mode") - elif self.writeMode == 3: - self.print_and_log("JSON模式|JSON Mode") - self.containJudge = service["containJudge"] # 是否含有判断语句 - self.outputParameters = {} - self.service = service - self.outputParametersTypes = [] - self.outputParametersRecord = [] # 字段是否被记录 - self.dataNotFoundKeys = {} # 记录没有找到数据的key - self.history = {"index": 0, "handle": None} # 记录页面现在所以在的历史记录的位置 - self.SAVED = False # 记录是否已经存储了 - for param in service["outputParameters"]: # 初始化输出参数 - if param["name"] not in self.outputParameters.keys(): - self.outputParameters[param["name"]] = "" - self.dataNotFoundKeys[param["name"]] = False - try: - self.outputParametersTypes.append(param["type"]) - except: - self.outputParametersTypes.append("text") - try: - self.outputParametersRecord.append( - bool(param["recordASField"])) - except: - self.outputParametersRecord.append(True) - # 文件叠加的时候不添加表头 - if self.outputFormat == "csv" or self.outputFormat == "txt" or self.outputFormat == "xlsx": - if self.writeMode == 0: - self.OUTPUT[0].append(param["name"]) - self.urlId = 0 # 全局记录变量 - self.preprocess() # 预处理,优化提取数据流程 - try: - self.inputExcel = service["inputExcel"] # 输入Excel - except: - self.inputExcel = "" - self.readFromExcel() # 读取Excel获得参数值 - - # 检测如果没有复杂的操作,优化提取数据流程 - def preprocess(self): - for node in self.procedure: - try: - iframe = node["parameters"]["iframe"] - except: - node["parameters"]["iframe"] = False - - try: - node["parameters"]["xpath"] = lowercase_tags_in_xpath( - node["parameters"]["xpath"]) - except: - pass - try: - node["parameters"]["waitElementIframeIndex"] = int( - node["parameters"]["waitElementIframeIndex"]) - except: - node["parameters"]["waitElement"] = "" - node["parameters"]["waitElementTime"] = 10 - node["parameters"]["waitElementIframeIndex"] = 0 - if node["option"] == 1: # 打开网页操作 - try: - cookies = node["parameters"]["cookies"] - except: - node["parameters"]["cookies"] = "" - elif node["option"] == 2: # 点击操作 - try: - alertHandleType = node["parameters"]["alertHandleType"] - except: - node["parameters"]["alertHandleType"] = 0 - if node["parameters"]["useLoop"]: - if self.task_version <= "0.3.5": - # 0.3.5及以下版本的EasySpider下的循环点击不支持相对XPath - node["parameters"]["xpath"] = "" - self.print_and_log("您的任务版本号为" + self.task_version + - ",循环点击不支持相对XPath写法,已自动切换为纯循环的XPath") - elif node["option"] == 3: # 提取数据操作 - node["parameters"]["recordASField"] = 0 - params = node["parameters"]["params"] - try: - clear = node["parameters"]["clear"] - except: - node["parameters"]["clear"] = 0 - try: - newLine = node["parameters"]["newLine"] - except: - node["parameters"]["newLine"] = 1 - for param in params: - try: - iframe = param["iframe"] - except: - param["iframe"] = False - try: - param["relativeXPath"] = lowercase_tags_in_xpath( - param["relativeXPath"]) - except: - pass - try: - node["parameters"]["recordASField"] += param["recordASField"] - except: - node["parameters"]["recordASField"] += 1 - if param["contentType"] == 8: - self.print_and_log( - "默认的ddddocr识别功能如果觉得不好用,可以自行修改源码get_content函数->contentType == 8的位置换成自己想要的OCR模型然后自己编译运行;或者可以先设置采集内容类型为“元素截图”把图片保存下来,然后用自定义操作调用自己写的程序,程序的功能是读取这个最新生成的图片,然后用好用的模型,如PaddleOCR把图片识别出来,然后把返回值返回给程序作为参数输出。") - self.print_and_log( - "If you think the default ddddocr function is not good enough, you can modify the source code get_content function -> contentType == 8 position to your own OCR model and then compile and run it; or you can first set the content type of the crawler to \"Element Screenshot\" to save the picture, and then call your own program with custom operations. The function of the program is to read the latest generated picture, then use a good model, such as PaddleOCR to recognize the picture, and then return the return value as a parameter output to the program.") - if param["beforeJS"] == "" and param["afterJS"] == "" and param["contentType"] <= 1 and param[ - "nodeType"] <= 2: - param["optimizable"] = True - else: - param["optimizable"] = False - elif node["option"] == 4: # 输入文字 - try: - index = node["parameters"]["index"] # 索引值 - except: - node["parameters"]["index"] = 0 - elif node["option"] == 5: # 自定义操作 - try: - clear = node["parameters"]["clear"] - except: - node["parameters"]["clear"] = 0 - try: - newLine = node["parameters"]["newLine"] - except: - node["parameters"]["newLine"] = 1 - elif node["option"] == 7: # 移动到元素 - if node["parameters"]["useLoop"]: - if self.task_version <= "0.3.5": - # 0.3.5及以下版本的EasySpider下的循环点击不支持相对XPath - node["parameters"]["xpath"] = "" - self.print_and_log("您的任务版本号为" + self.task_version + - ",循环点击不支持相对XPath写法,已自动切换为纯循环的XPath") - elif node["option"] == 8: # 循环操作 - try: - exitElement = node["parameters"]["exitElement"] - if exitElement == "": - node["parameters"]["exitElement"] = "//body" - except: - node["parameters"]["exitElement"] = "//body" - self.print_and_log("预处理完成|Preprocess completed") - - def readFromExcel(self): - if self.inputExcel == "": - return 0 - try: - workbook = load_workbook(self.inputExcel) - except: - self.print_and_log("读取Excel失败,将会使用默认参数执行任务,请检查文件路径是否正确:", - os.path.abspath(self.inputExcel)) - self.print_and_log( - "Failed to read Excel, will execute the task with default parameters, please check if the file path is correct: ", - os.path.abspath(self.inputExcel)) - time.sleep(5) - return 0 - - sheet_name_list = workbook.sheetnames - sheet = workbook[sheet_name_list[0]] - data = [] - - for row in sheet.iter_rows(values_only=True): - data.append(list(row)) - - result = list(zip(*data)) - result_dict = {} - for row in result: - key = row[0] - values = [str(val) for val in row[1:] if val is not None] - result_dict.setdefault(key, []).extend([values]) - - data = {} - for key, arr in result_dict.items(): - result = [] - for cols in zip(*arr): - result.append("~".join(cols)) - data[key] = result - - try: - if "urlList_0" in data.keys(): - self.links = data["urlList_0"] - except: - self.links = "about:blank" - task = self.service - for key, value in data.items(): - for i in range(len(task["inputParameters"])): - if key == task["inputParameters"][i]["name"]: - nodeId = int(task["inputParameters"][i]["nodeId"]) - node = task["graph"][nodeId] - value = "\r\n".join(value) - if node["option"] == 1: - node["parameters"]["links"] = value - elif node["option"] == 4: - node["parameters"]["value"] = value - elif node["option"] == 8 and node["parameters"]["loopType"] == 0: - node["parameters"]["exitCount"] = int(value) - elif node["option"] == 8: - node["parameters"]["textList"] = value - break - self.print_and_log("已从Excel读取输入参数,覆盖了原有输入参数。") - self.print_and_log( - "Already read input parameters from Excel and overwrite the original input parameters.") - - def run(self): - # 挨个执行程序 - for i in range(len(self.links)): - self.print_and_log("正在执行第", i + 1, "/ ", len(self.links), "个链接") - self.print_and_log("Executing link", i + 1, - "/ ", len(self.links)) - self.executeNode(0) - self.urlId = self.urlId + 1 - files = os.listdir("Data/Task_" + str(self.id) + "/" + self.saveName) - # 如果目录为空,则删除该目录 - if not files: - os.rmdir("Data/Task_" + str(self.id) + "/" + self.saveName) - self.print_and_log("Done!") - self.print_and_log("执行完成!") - self.saveData(exit=True) - if self.outputFormat == "mysql": - self.mysql.close() - try: - quitWaitTime = self.service["quitWaitTime"] - except: - quitWaitTime = 60 - self.print_and_log(f"任务执行完毕,将在{quitWaitTime}秒后自动退出浏览器并清理临时用户目录,等待时间可在保存任务对话框中设置。") - self.print_and_log(f"The task is completed, the browser will exit automatically and the temporary user directory will be cleaned up after {quitWaitTime} seconds, the waiting time can be set in the save task dialog.") - time.sleep(quitWaitTime) - self.browser.quit() - self.print_and_log("正在清理临时用户目录……|Cleaning up temporary user directory...") - try: - shutil.rmtree(self.option["tmp_user_data_folder"]) - except: - pass - self.print_and_log("清理完成!|Clean up completed!") - - def recordLog(self, *args, **kwargs): - now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") - print(now + ":", *args, file=self.logs, **kwargs) - - # 定义一个自定义的 print 函数,它将内容同时打印到屏幕和文件中 - def print_and_log(self, *args, **kwargs): - now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") - # 将内容打印到屏幕 - print(*args, **kwargs) - - # 将内容写入文件 - print(now + ":", *args, file=self.logs, **kwargs) - - def saveData(self, exit=False): - # 每save_threshold条保存一次 - if exit == True or len(self.OUTPUT) >= self.save_threshold: - # 写入日志 - # self.recordLog("持久化存储数据/Persistently store data") - if self.log: - with open("Data/Task_" + str(self.id) + "/" + self.saveName + '.log', 'a', - encoding='utf-8-sig') as file_obj: - file_obj.write(self.logs.getvalue()) - file_obj.close() - # 写入已执行步数 - with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_steps.txt', 'w', - encoding='utf-8-sig') as file_obj: - file_obj.write(str(self.totalSteps + 1)) - file_obj.close() - # 写入数据 - if self.outputFormat == "csv" or self.outputFormat == "txt": - file_name = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + \ - '.' + self.outputFormat - write_to_csv(file_name, self.OUTPUT, - self.outputParametersRecord) - elif self.outputFormat == "xlsx": - file_name = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + '.xlsx' - write_to_excel( - file_name, self.OUTPUT, self.outputParametersTypes, self.outputParametersRecord) - elif self.outputFormat == "json": - file_name = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + '.json' - write_to_json(file_name, self.OUTPUT, self.outputParametersTypes, - self.outputParametersRecord, self.outputParameters.keys()) - elif self.outputFormat == "mysql": - self.mysql.write_to_mysql( - self.OUTPUT, self.outputParametersRecord, self.outputParametersTypes) - - self.OUTPUT = [] - self.logs.truncate(0) # 清空日志 - self.logs.seek(0) # 清空日志 - - def scrollDown(self, param, rt=""): - try: - time.sleep(param["scrollWaitTime"]) # 下拉前等待 - except: - pass - scrollType = int(param["scrollType"]) - try: - param["scrollCount"] = int(param["scrollCount"]) - except: - param["scrollCount"] = 1 - try: - if scrollType != 0 and param["scrollCount"] > 0: # 控制屏幕向下滚动 - if scrollType == 1 or scrollType == 2: - for i in range(param["scrollCount"]): - body = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=param["iframe"]) - if scrollType == 1: - body.send_keys(Keys.PAGE_DOWN) - elif scrollType == 2: - body.send_keys(Keys.END) - try: - time.sleep(param["scrollWaitTime"]) # 下拉完等待 - except: - pass - self.print_and_log("向下滚动,第", i + 1, "次。") - self.print_and_log( - "Scroll down, the", i + 1, "time.") - elif scrollType == 3: - bodyText = "" - i = 0 - while True: - newBodyText = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=False).text - if param["iframe"]: # 如果标记了iframe - iframes = self.browser.find_elements( - By.CSS_SELECTOR, "iframe", iframe=False) - for iframe in iframes: - self.browser.switch_to.default_content() - self.browser.switch_to.frame(iframe) - iframe_text = super(self.browser.__class__, self.browser).find_element( - By.CSS_SELECTOR, "body").text # 用super调用父类的方法 - newBodyText += iframe_text - self.browser.switch_to.default_content() - if newBodyText == bodyText: - self.print_and_log("页面已检测不到新内容,停止滚动。") - self.print_and_log( - "No new content detected on the page, stop scrolling.") - break - else: - bodyText = newBodyText - body = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=param["iframe"]) - body.send_keys(Keys.END) - self.print_and_log("滚动到底部,第", i + 1, "次。") - self.print_and_log( - "Scroll to the bottom, the", i + 1, "time.") - i = i + 1 - try: - time.sleep(param["scrollWaitTime"]) # 下拉完等待 - except: - pass - except: - self.print_and_log('Time out after set seconds when scrolling. ') - try: - self.browser.execute_script('window.stop()') - except: - pass - if scrollType != 0 and param["scrollCount"] > 0: # 控制屏幕向下滚动 - for i in range(param["scrollCount"]): - self.print_and_log( - "Wait for set second after screen scrolling") - body = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=param["iframe"]) - if scrollType == 1: - body.send_keys(Keys.PGDN) - elif scrollType == 2: - body.send_keys(Keys.END) - try: - time.sleep(param["scrollWaitTime"]) # 下拉完等待 - except: - pass - if rt != "": - rt.end() - - def execute_code(self, codeMode, code, max_wait_time, element=None, iframe=False): - output = "" - if code == "": - return "" - if max_wait_time == 0: - max_wait_time = 999999 - # self.print_and_log(codeMode, code) - # 将value中的Field[""]替换为outputParameters中的键值 - code = replace_field_values(code, self.outputParameters, self) - if iframe and self.browser.iframe_env == False: - # 获取所有的 iframe - self.browser.switch_to.default_content() - iframes = self.browser.find_elements( - By.CSS_SELECTOR, "iframe", iframe=False) - # 遍历所有的 iframe 并点击里面的元素 - for iframe in iframes: - # 切换到 iframe - try: - self.browser.switch_to.default_content() - self.browser.switch_to.frame(iframe) - self.browser.iframe_env = True - break - except: - self.print_and_log("Iframe switch failed") - elif not iframe and self.browser.iframe_env == True: - self.browser.switch_to.default_content() - self.browser.iframe_env = False - if int(codeMode) == 0: - self.recordLog("Execute JavaScript:" + code) - self.recordLog("执行JavaScript:" + code) - self.browser.set_script_timeout(max_wait_time) - try: - output = self.browser.execute_script(code) - except: - output = "" - self.recordLog("JavaScript execution failed") - elif int(codeMode) == 2: - self.recordLog("Execute JavaScript for element:" + code) - self.recordLog("对元素执行JavaScript:" + code) - self.browser.set_script_timeout(max_wait_time) - try: - output = self.browser.execute_script(code, element) - except: - output = "" - self.recordLog("JavaScript execution failed") - elif int(codeMode) == 5: - try: - code = readCode(code) - output = exec(code) - self.recordLog("执行下面的代码:" + code) - self.recordLog("Execute the following code:" + code) - except Exception as e: - self.print_and_log("执行下面的代码时出错:" + code, ",错误为:", e) - self.print_and_log("Error executing the following code:" + - code, ", error is:", e) - elif int(codeMode) == 6: - try: - code = readCode(code) - output = eval(code) - self.recordLog("获得下面的代码返回值:" + code) - self.recordLog( - "Get the return value of the following code:" + code) - except Exception as e: - self.print_and_log("获得下面的代码返回值时出错:" + code, ",错误为:", e) - self.print_and_log( - "Error executing and getting return value the following code:" + code, ", error is:", e) - elif int(codeMode) == 1: - self.recordLog("Execute System Call:" + code) - self.recordLog("执行系统命令:" + code) - # 执行系统命令 - try: - # output = subprocess.run(code, capture_output=True, text=True, timeout=max_wait_time, encoding="utf-8", shell=True) - output = subprocess.run( - code, capture_output=True, text=True, timeout=max_wait_time, shell=True) - # 输出命令返回值 - output = output.stdout - self.print_and_log(output) - except subprocess.TimeoutExpired: - # 命令执行时间超过指定值,抛出异常 - self.recordLog("Command timed out") - self.recordLog("命令执行超时") - except Exception as e: - self.print_and_log(e) # 打印异常信息 - self.recordLog("Command execution failed") - self.recordLog("命令执行失败") - try: - output = str(output) - except: - output = "无法转换为字符串|Unable to convert to string" - self.print_and_log("无法转换为字符串|Unable to convert to string", output) - return output - - def customOperation(self, node, loopValue, loopPath, index): - params = node["parameters"] - if params["clear"] == 1: - self.clearOutputParameters() - codeMode = int(params["codeMode"]) - code = params["code"] - output = "" - max_wait_time = int(params["waitTime"]) - if codeMode == 2: # 使用循环的情况下,传入的clickPath就是实际的xpath - try: - loopPath = replace_field_values( - loopPath, self.outputParameters, self) - elements = self.browser.find_elements( - By.XPATH, loopPath, iframe=params["iframe"]) - element = elements[index] - output = self.execute_code( - codeMode, code, max_wait_time, element, iframe=params["iframe"]) - except: - output = "" - self.print_and_log("JavaScript execution failed") - elif codeMode == 3: - self.BREAK = True - self.recordLog("跳出循环|Break the loop") - elif codeMode == 4: - self.CONTINUE = True - self.recordLog("跳过本次循环|Skip this loop") - elif codeMode == 7: # 暂停程序执行 - self.event.clear() - self.print_and_log( - f"根据设置的自定义操作,任务已暂停,长按{self.service['pauseKey']}键继续执行...|Task paused according to custom operation, long press '{self.service['pauseKey']}' to continue...") - elif codeMode == 8: # 刷新页面 - self.browser.refresh() - self.print_and_log("根据设置的自定义操作,任务已刷新页面|Task refreshed page according to custom operation") - else: # 0 1 5 6 - output = self.execute_code( - codeMode, code, max_wait_time, iframe=params["iframe"]) - recordASField = bool(params["recordASField"]) - # if recordASField: - # self.print_and_log("操作<" + node["title"] + ">的返回值为:" + output) - # self.print_and_log("The return value of operation <" + node["title"] + "> is: " + output) - self.outputParameters[node["title"]] = output - if recordASField and params["newLine"]: - line = new_line(self.outputParameters, - self.maxViewLength, self.outputParametersRecord) - self.OUTPUT.append(line) - - def switchSelect(self, param, loopValue): - optionMode = param["optionMode"] - optionValue = param["optionValue"] - if param["useLoop"]: - index = param["index"] - if index != 0: - try: - optionValue = loopValue.split("~")[index - 1] - except: - self.print_and_log("取值失败,可能是因为取值索引超出范围,将使用整个文本值") - self.print_and_log( - "Failed to get value, maybe because the index is out of range, will use the entire text value") - else: - optionValue = loopValue - optionMode = 1 - try: - xpath = replace_field_values( - param["xpath"], self.outputParameters, self) - dropdown = Select(self.browser.find_element( - By.XPATH, xpath, iframe=param["iframe"])) - try: - if optionMode == 0: - # 获取当前选中的选项索引 - current_index = dropdown.options.index( - dropdown.first_selected_option) - # 计算下一个选项的索引 - next_index = (current_index + 1) % len(dropdown.options) - # 选择下一个选项 - dropdown.select_by_index(next_index) - elif optionMode == 1: - dropdown.select_by_index(int(optionValue)) - elif optionMode == 2: - dropdown.select_by_value(optionValue) - elif optionMode == 3: - dropdown.select_by_visible_text(optionValue) - # self.recordLog("切换到下拉框选项|Change to drop-down box option:", xpath) - except: - self.print_and_log("切换下拉框选项失败:", xpath, - param["optionMode"], param["optionValue"]) - self.print_and_log("Failed to change drop-down box option:", - xpath, param["optionMode"], param["optionValue"]) - except: - self.print_and_log("找不到下拉框元素:", xpath) - self.print_and_log("Cannot find drop-down box element:", xpath) - - def moveToElement(self, param, loopElement=None, loopPath="", index=0): - time.sleep(0.1) # 移动之前等待0.1秒 - loopPath = replace_field_values(loopPath, self.outputParameters, self) - xpath = replace_field_values( - param["xpath"], self.outputParameters, self) - if param["useLoop"]: # 使用循环的情况下,传入的clickPath就是实际的xpath - if xpath == "": - path = loopPath - else: - path = "(" + loopPath + ")" + \ - "[" + str(index + 1) + "]" + \ - xpath - index = 0 # 如果是相对循环内元素的点击,在定位到元素后,index应该重置为0 - # element = loopElement - else: - index = 0 - path = xpath # 不然使用元素定义的xpath - path = replace_field_values(path, self.outputParameters, self) - try: - elements = self.browser.find_elements( - By.XPATH, path, iframe=param["iframe"]) - element = elements[index] - try: - ActionChains(self.browser).move_to_element(element).perform() - # self.recordLog("移动到元素|Move to element:", path) - except: - self.print_and_log("移动鼠标到元素失败:", xpath) - self.print_and_log("Failed to move mouse to element:", xpath) - except: - self.print_and_log("找不到元素:", xpath) - self.print_and_log("Cannot find element:", xpath) - - # 执行节点关键函数部分 - - def executeNode(self, nodeId, loopValue="", loopPath="", index=0): - node = self.procedure[nodeId] - # WebDriverWait(self.browser, 10).until - # # 等待元素出现才进行操作,10秒内未出现则报错 - # (EC.visibility_of_element_located( - # (By.XPATH, node["parameters"]["xpath"]))) - try: - if node["parameters"]["waitElement"] != "": - waitElement = replace_field_values( - node["parameters"]["waitElement"], self.outputParameters, self) - waitElementTime = float(node["parameters"]["waitElementTime"]) - waitElementIframeIndex = node["parameters"]["waitElementIframeIndex"] - self.print_and_log("等待元素出现:", waitElement) - self.print_and_log( - "Waiting for element to appear:", waitElement) - if waitElementIframeIndex > 0: - iframes = self.browser.find_elements( - By.CSS_SELECTOR, "iframe", iframe=False) - iframe = iframes[waitElementIframeIndex - 1] - self.browser.switch_to.frame(iframe) - WebDriverWait(self.browser, waitElementTime).until( - EC.presence_of_element_located((By.XPATH, waitElement)) - ) - if waitElementIframeIndex > 0: - self.browser.switch_to.default_content() - except Exception as e: - if waitElement != "": - self.print_and_log("等待元素出现超时:", waitElement, ",将继续执行。") - self.print_and_log("Timeout waiting for element to appear:", - waitElement, ", will continue to execute.") - self.recordLog(e) - self.recordLog("Wait element not found") - self.recordLog("执行节点|Execute node:", node["title"]) - # 根据不同选项执行不同操作 - if node["option"] == 0 or node["option"] == 10: # root操作,条件分支操作 - for i in node["sequence"]: # 从根节点开始向下读取 - self.executeNode(i, loopValue, loopPath, index) - elif node["option"] == 1: # 打开网页操作 - # if not (nodeId == 1 and self.service["cloudflare"] == 1): - self.openPage(node["parameters"], loopValue) - elif node["option"] == 2: # 点击元素 - self.clickElement(node["parameters"], loopValue, loopPath, index) - elif node["option"] == 3: # 提取数据 - # 针对提取数据操作,设置操作开始的步骤,用于不小心关闭后的恢复的增量采集 - if self.totalSteps >= self.startSteps: - self.getData(node["parameters"], loopValue, node["isInLoop"], - parentPath=loopPath, index=index) - self.saveData() - else: - # self.getDataStep += 1 - self.print_and_log("跳过第" + str(self.totalSteps) + "次提取数据。") - self.print_and_log( - "Skip the " + str(self.totalSteps) + "th data extraction.") - self.totalSteps += 1 # 总步数加一 - elif node["option"] == 4: # 输入文字 - self.inputInfo(node["parameters"], loopValue) - elif node["option"] == 5: # 自定义操作 - self.customOperation(node, loopValue, loopPath, index) - self.saveData() - elif node["option"] == 6: # 切换下拉框 - self.switchSelect(node["parameters"], loopValue) - elif node["option"] == 7: # 鼠标移动到元素上 - self.moveToElement(node["parameters"], loopValue, loopPath, index) - elif node["option"] == 8: # 循环 - self.loopExecute(node, loopValue, loopPath, index) # 执行循环 - elif node["option"] == 9: # 条件分支 - self.judgeExecute(node, loopValue, loopPath, index) - - # 执行完之后进行等待 - if node["option"] != 0 and node["option"] != 2: # 点击元素操作单独定义等待时间操作 - waitTime = 0.01 # 默认等待0.01秒 - if node["parameters"]["wait"] >= 0: - waitTime = node["parameters"]["wait"] - try: - waitType = int(node["parameters"]["waitType"]) - except: - waitType = 0 - if waitType == 0: # 固定等待时间 - time.sleep(waitTime) - elif waitType == 1: # 随机等待时间 - time.sleep(random.uniform(waitTime * 0.5, waitTime * 1.5)) - self.event.wait() # 等待事件结束 - - # 对判断条件的处理 - - def judgeExecute(self, node, loopElement, clickPath="", index=0): - executeBranchId = 0 # 要执行的BranchId - for i in node["sequence"]: - cnode = self.procedure[i] # 获得条件分支 - tType = int(cnode["parameters"]["class"]) # 获得判断条件类型 - if tType == 0: # 什么条件都没有 - executeBranchId = i - break - elif tType == 1: # 当前页面包含文本 - try: - bodyText = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=cnode["parameters"]["iframe"]).text - value = replace_field_values( - cnode["parameters"]["value"], self.outputParameters, self) - if bodyText.find(value) >= 0: - executeBranchId = i - break - except: # 找不到元素下一个条件 - continue - elif tType == 2: # 当前页面包含元素 - try: - xpath = replace_field_values( - cnode["parameters"]["value"], self.outputParameters, self) - if self.browser.find_element(By.XPATH, xpath, iframe=cnode["parameters"]["iframe"]): - executeBranchId = i - break - except: # 找不到元素或者xpath写错了,下一个条件 - continue - elif tType == 3: # 当前循环元素包括文本 - try: - value = replace_field_values( - cnode["parameters"]["value"], self.outputParameters, self) - if loopElement.text.find(value) >= 0: - executeBranchId = i - break - except: # 找不到元素或者xpath写错了,下一个条件 - continue - elif tType == 4: # 当前循环元素包括元素 - try: - xpath = replace_field_values( - cnode["parameters"]["value"][1:], self.outputParameters, self) - if loopElement.find_element(By.XPATH, xpath): - executeBranchId = i - break - except: # 找不到元素或者xpath写错了,下一个条件 - continue - elif tType <= 8: # JS命令返回值 - if tType == 5: # JS命令返回值等于 - output = self.execute_code( - 0, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], - iframe=cnode["parameters"]["iframe"]) - elif tType == 6: # System - output = self.execute_code( - 1, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], - iframe=cnode["parameters"]["iframe"]) - elif tType == 7: # 针对当前循环项的JS命令返回值 - output = self.execute_code( - 2, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], loopElement, - iframe=cnode["parameters"]["iframe"]) - elif tType == 8: # 针对当前循环项的System命令返回值 - output = self.execute_code( - 6, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], loopElement, - iframe=cnode["parameters"]["iframe"]) - try: - if output.find("rue") != -1: # 如果返回值中包含true - code = 1 - else: - code = int(output) - except: - code = 0 - if code > 0: - executeBranchId = i - break - # rt.end() - if executeBranchId != 0: - self.executeNode(executeBranchId, loopElement, clickPath, index) - else: - self.recordLog( - "判断条件内所有条件分支的条件都不满足|None of the conditions in the judgment condition are met") - - def handleHistory(self, node, xpath, thisHitoryURL, thisHistoryLength, index, element=None, elements=None): - if self.history["index"] != thisHistoryLength and self.history["handle"] == self.browser.current_window_handle: # 如果执行完一次循环之后历史记录发生了变化,注意当前页面的判断 - difference = thisHistoryLength - self.history["index"] # 计算历史记录变化差值 - self.browser.execute_script('history.go(' + str(difference) + ')') # 回退历史记录 - # if node["parameters"]["historyWait"] > 2: # 回退后要等待的时间 - time.sleep(node["parameters"]["historyWait"]) - # else: - # time.sleep(2) - try: - self.browser.execute_script('window.stop()') - except: - pass - ti = 0 - if self.browser.current_url.startswith("data:"): - while self.browser.current_url != thisHitoryURL: # 如果执行完一次循环之后网址发生了变化 - try: - self.browser.execute_script("history.go(1)") # 如果是data:开头的网址,就前进一步 - except: # 超时的情况下 - pass - ti += 1 - if self.browser.current_url == thisHitoryURL or ti > thisHistoryLength: # 如果执行完一次循环之后网址发生了变化 - break - time.sleep(2) - if element == None: # 不固定元素列表 - element = self.browser.find_elements(By.XPATH, xpath, iframe=node["parameters"]["iframe"]) - else: # 固定元素列表 - element = self.browser.find_element(By.XPATH, xpath, iframe=node["parameters"]["iframe"]) - if index > 0: - index -= 1 # 如果是data:开头的网址,就要重试一次 - else: - if element == None: - element = elements - return index, element - - # 对循环的处理 - def loopExecute(self, node, loopValue, clickPath="", index=0): - time.sleep(0.1) # 第一次执行循环的时候强制等待1秒 - thisHandle = self.browser.current_window_handle # 记录本次循环内的标签页的ID - try: - thisHistoryLength = self.browser.execute_script( - 'return history.length') # 记录本次循环内的history的length - except: - thisHistoryLength = 0 - self.history["index"] = thisHistoryLength - self.history["handle"] = thisHandle - thisHitoryURL = self.browser.current_url - if int(node["parameters"]["loopType"]) == 0: # 单个元素循环 - # 无跳转标签页操作 - count = 0 # 执行次数 - bodyText = "-" - while True: # do while循环 - try: - finished = False - # newBodyText = self.browser.page_source - # newBodyText = self.browser.find_element(By.XPATH, "//body").text - if node["parameters"]["exitCount"] == 0: - newBodyText = self.browser.find_element(By.XPATH, node["parameters"]["exitElement"], iframe=node["parameters"]["iframe"]).text - if node["parameters"]["iframe"]: # 如果标记了iframe - iframes = self.browser.find_elements( - By.CSS_SELECTOR, "iframe", iframe=False) - for iframe in iframes: - self.browser.switch_to.default_content() - self.browser.switch_to.frame(iframe) - iframe_text = super(self.browser.__class__, self.browser).find_element( - By.CSS_SELECTOR, "body").text # 用super调用父类的方法 - newBodyText += iframe_text - self.browser.switch_to.default_content() - - if newBodyText == bodyText: # 如果页面内容无变化 - self.print_and_log("页面已检测不到新内容,停止循环。") - self.print_and_log( - "No new content detected on the page, stop loop.") - finished = True - break - else: - self.print_and_log("检测到页面变化,继续循环。") - self.print_and_log( - "Page changed detected, continue loop.") - bodyText = newBodyText - xpath = replace_field_values( - node["parameters"]["xpath"], self.outputParameters, self) - # self.recordLog("循环元素|Loop element:", xpath) - element = self.browser.find_element( - By.XPATH, xpath, iframe=node["parameters"]["iframe"]) - for i in node["sequence"]: # 挨个执行操作 - self.executeNode( - i, element, xpath, 0) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: # 如果有break操作,退出循环 - self.BREAK = False - finished = True - break - finished = True - except NoSuchElementException: - # except: - self.print_and_log("Single loop element not found: ", - xpath) - self.print_and_log("找不到要循环的单个元素: ", xpath) - for i in node["sequence"]: # 不带点击元素的把剩余的如提取数据的操作执行一遍 - if node["option"] != 2: - self.executeNode( - i, None, xpath, 0) - finished = True - break # 如果找不到元素,退出循环 - finally: - if not finished: - self.print_and_log("\n\n-------Retrying-------\n\n") - self.print_and_log("-------Retrying-------: ", - node["parameters"]["xpath"]) - for i in node["sequence"]: # 不带点击元素的把剩余的如提取数据的操作执行一遍 - if node["option"] != 2: - self.executeNode( - i, None, xpath, 0) - break # 如果找不到元素,退出循环 - count = count + 1 - self.print_and_log("Page: ", count) - # self.print_and_log(node["parameters"]["exitCount"], "-------") - if node["parameters"]["exitCount"] == count: # 如果达到设置的退出循环条件的话 - break - if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 - output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], - node["parameters"]["breakCodeWaitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - elif int(node["parameters"]["loopType"]) == 1: # 不固定元素列表 - try: - xpath = replace_field_values( - node["parameters"]["xpath"], self.outputParameters, self) - elements = self.browser.find_elements(By.XPATH, - xpath, iframe=node["parameters"]["iframe"]) - # self.recordLog("循环元素|Loop element:", xpath) - if len(elements) == 0: - self.print_and_log("Loop element not found: ", - xpath) - self.print_and_log("找不到循环元素: ", xpath) - index = 0 - while index < len(elements): - for i in node["sequence"]: # 挨个顺序执行循环里所有的操作 - self.executeNode(i, elements[index], - xpath, index) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: - self.BREAK = False - break - try: - changed_handle = self.browser.current_window_handle != thisHandle - except: # 如果网页被意外关闭了的情况下 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - changed_handle = self.browser.window_handles[-1] != thisHandle - if changed_handle: # 如果执行完一次循环之后标签页的位置发生了变化 - try: - while True: # 一直关闭窗口直到当前标签页 - self.browser.close() # 关闭使用完的标签页 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - if self.browser.current_window_handle == thisHandle: - break - except Exception as e: - self.print_and_log("关闭标签页发生错误:", e) - self.print_and_log( - "Error occurred while closing tab: ", e) - index, elements = self.handleHistory(node, xpath, thisHitoryURL, thisHistoryLength, index, elements=elements) - if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 - output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], - node["parameters"]["breakCodeWaitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - index = index + 1 - except NoSuchElementException: - self.print_and_log("Loop element not found: ", xpath) - self.print_and_log("找不到循环元素: ", xpath) - except Exception as e: - raise - elif int(node["parameters"]["loopType"]) == 2: # 固定元素列表 - # 千万不要忘了分割!! - paths = node["parameters"]["pathList"].split("\n") - # for path in node["parameters"]["pathList"].split("\n"): - index = 0 - while index < len(paths): - path = paths[index] - try: - path = replace_field_values( - path, self.outputParameters, self) - element = self.browser.find_element( - By.XPATH, path, iframe=node["parameters"]["iframe"]) - # self.recordLog("循环元素|Loop element:", path) - for i in node["sequence"]: # 挨个执行操作 - self.executeNode(i, element, path, 0) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: - self.BREAK = False - break - try: - changed_handle = self.browser.current_window_handle != thisHandle - except: # 如果网页被意外关闭了的情况下 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - changed_handle = self.browser.window_handles[-1] != thisHandle - if changed_handle: # 如果执行完一次循环之后标签页的位置发生了变化 - try: - while True: # 一直关闭窗口直到当前标签页 - self.browser.close() # 关闭使用完的标签页 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - if self.browser.current_window_handle == thisHandle: - break - except Exception as e: - self.print_and_log("关闭标签页发生错误:", e) - self.print_and_log( - "Error occurred while closing tab: ", e) - index, element = self.handleHistory(node, path, thisHitoryURL, thisHistoryLength, index, element=element) - except NoSuchElementException: - self.print_and_log("Loop element not found: ", path) - self.print_and_log("找不到循环元素: ", path) - index += 1 - continue # 循环中找不到元素就略过操作 - except Exception as e: - raise - if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 - output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], - node["parameters"]["breakCodeWaitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - index = index + 1 - elif int(node["parameters"]["loopType"]) == 3: # 固定文本列表 - textList = node["parameters"]["textList"].split("\n") - if len(textList) == 1: # 如果固定文本列表只有一行,现在就可以替换变量 - textList = replace_field_values( - node["parameters"]["textList"], self.outputParameters, self).split("\n") - for text in textList: - text = replace_field_values(text, self.outputParameters, self) - # self.recordLog("当前循环文本|Current loop text:", text) - for i in node["sequence"]: # 挨个执行操作 - self.executeNode(i, text, "", 0) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: - self.BREAK = False - break - if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 - output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], - node["parameters"]["breakCodeWaitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - elif int(node["parameters"]["loopType"]) == 4: # 固定网址列表 - # tempList = node["parameters"]["textList"].split("\r\n") - urlList = list( - filter(isnotnull, node["parameters"]["textList"].split("\n"))) # 去空行 - if len(urlList) == 1: # 如果固定网址列表只有一行,现在就可以替换变量 - urlList = replace_field_values( - node["parameters"]["textList"], self.outputParameters, self).split("\n") - # urlList = [] - # for url in tempList: - # if url != "": - # urlList.append(url) - for url in urlList: - url = replace_field_values(url, self.outputParameters, self) - # self.recordLog("当前循环网址|Current loop url:", url) - for i in node["sequence"]: - self.executeNode(i, url, "", 0) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: - self.BREAK = False - break - if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 - output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], - node["parameters"]["breakCodeWaitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - elif int(node["parameters"]["loopType"]) <= 7: # 命令返回值 - while True: # do while循环 - if int(node["parameters"]["loopType"]) == 5: # JS - output = self.execute_code( - 0, node["parameters"]["code"], node["parameters"]["waitTime"], - iframe=node["parameters"]["iframe"]) - elif int(node["parameters"]["loopType"]) == 6: # System - output = self.execute_code( - 1, node["parameters"]["code"], node["parameters"]["waitTime"], - iframe=node["parameters"]["iframe"]) - elif int(node["parameters"]["loopType"]) == 7: # Python - output = self.execute_code( - 6, node["parameters"]["code"], node["parameters"]["waitTime"], - iframe=node["parameters"]["iframe"]) - code = get_output_code(output) - if code <= 0: - break - for i in node["sequence"]: # 挨个执行操作 - self.executeNode(i, code, node["parameters"]["xpath"], 0) - if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 - self.CONTINUE = False - break - if self.BREAK: - self.BREAK = False - break - self.history["index"] = thisHistoryLength - self.history["handle"] = self.browser.current_window_handle - self.scrollDown(node["parameters"]) - - # 打开网页事件 - def openPage(self, param, loopValue): - time.sleep(1) # 打开网页后强行等待至少1秒 - if len(self.browser.window_handles) > 1: - self.browser.switch_to.window( - self.browser.window_handles[-1]) # 打开网页操作从第1个页面开始 - try: - self.browser.close() - except: - pass - self.browser.switch_to.window( - self.browser.window_handles[0]) # 打开网页操作从第1个页面开始 - self.history["handle"] = self.browser.current_window_handle - if param["useLoop"]: - url = loopValue - elif param["url"] != "about:blank": - url = self.links[self.urlId] - # clear output parameters - for key in self.outputParameters: - self.outputParameters[key] = "" - else: # 在流程图其他位置设置了打开网页的操作,读取的应该是第一个网址,如打开网页后登录,再打开第二个网页 - url = list(filter(isnotnull, param["links"].split("\n")))[0] - # 将value中的Field[""]替换为outputParameters中的键值 - url = replace_field_values(url, self.outputParameters, self) - try: - maxWaitTime = int(param["maxWaitTime"]) - except: - maxWaitTime = 10 # 默认最大等待时间为10秒 - try: - self.browser.set_page_load_timeout(maxWaitTime) # 加载页面最大超时时间 - self.browser.set_script_timeout(maxWaitTime) - self.browser.get(url) - if param["cookies"] != "": - self.browser.delete_all_cookies() # 清除所有已有cookie - cookies = param["cookies"].split('\n') - for cookie in cookies: - name, value = cookie.split('=', 1) - cookie_dict = {'name': name, 'value': value} - # 加载 cookie - self.browser.add_cookie(cookie_dict) - self.print_and_log('加载页面|Loading page: ' + url) - except TimeoutException: - self.print_and_log( - 'Time out after set seconds when loading page: ' + url) - try: - self.browser.execute_script('window.stop()') - except: - pass - except Exception as e: - self.print_and_log("Failed to load page: " + url) - try: - self.history["index"] = self.browser.execute_script( - "return history.length") - except TimeoutException: - try: - self.browser.execute_script('window.stop()') - self.history["index"] = self.browser.execute_script( - "return history.length") - except: - self.history["index"] = 0 - except Exception as e: - self.print_and_log("History Length Error") - self.history["index"] = 0 - self.scrollDown(param) # 控制屏幕向下滚动 - - # 键盘输入事件 - def inputInfo(self, param, loopValue): - time.sleep(0.1) # 输入之前等待0.1秒 - try: - xpath = replace_field_values( - param["xpath"], self.outputParameters, self) - textbox = self.browser.find_element( - By.XPATH, xpath, iframe=param["iframe"]) - # textbox.send_keys(Keys.CONTROL, 'a') - # textbox.send_keys(Keys.BACKSPACE) - self.execute_code( - 2, param["beforeJS"], param["beforeJSWaitTime"], textbox, iframe=param["iframe"]) # 执行前置JS - # Send the HOME key - textbox.send_keys(Keys.HOME) - # Send the SHIFT + END key combination - textbox.send_keys(Keys.SHIFT, Keys.END) - # Send the DELETE key - textbox.send_keys(Keys.DELETE) - value = "" - if param["useLoop"]: - value = loopValue - else: - value = param["value"] - # 将value中的Field[""]替换为outputParameters中的键值 - pattern = r'Field\["([^"]+)"\]' - try: - replaced_text = re.sub( - pattern, lambda match: self.outputParameters.get(match.group(1), ''), value) - replaced_text = re.sub( - '', '', replaced_text, flags=re.IGNORECASE) - except: - replaced_text = value - index = param["index"] - if index != 0: - try: - replaced_text = replaced_text.split("~")[index - 1] - except: - self.print_and_log("取值失败,可能是因为取值索引超出范围,将使用整个文本值") - self.print_and_log( - "Failed to get value, maybe because the index is out of range, will use the entire text value") - textbox.send_keys(replaced_text) - if value.lower().find("") >= 0: - textbox.send_keys(Keys.ENTER) - self.recordLog("输入文字|Input text: " + - replaced_text + " to " + xpath) - self.execute_code( - 2, param["afterJS"], param["afterJSWaitTime"], textbox, iframe=param["iframe"]) # 执行后置js - except: - self.print_and_log("Cannot find input box element:" + - xpath + ", please try to set the wait time before executing this operation") - self.print_and_log("找不到输入框元素:" + xpath + ",请尝试在执行此操作前设置等待时间") - - # 点击元素事件 - def clickElement(self, param, loopElement=None, clickPath="", index=0): - try: - maxWaitTime = int(param["maxWaitTime"]) - except: - maxWaitTime = 10 - self.browser.set_page_load_timeout(maxWaitTime) # 加载页面最大超时时间 - self.browser.set_script_timeout(maxWaitTime) - # 点击前对该元素执行一段JavaScript代码 - try: - # element = self.browser.find_element( - # By.XPATH, path, iframe=param["iframe"]) - clickPath = replace_field_values( - clickPath, self.outputParameters, self) - xpath = replace_field_values( - param["xpath"], self.outputParameters, self) - if param["useLoop"]: # 使用循环的情况下,传入的clickPath就是实际的xpath - if xpath == "": - path = clickPath - else: - path = "(" + clickPath + ")" + \ - "[" + str(index + 1) + "]" + \ - xpath - index = 0 # 如果是相对循环内元素的点击,在定位到元素后,index应该重置为0 - # element = loopElement - else: - index = 0 - path = xpath # 不然使用元素定义的xpath - # element = self.browser.find_element( - # By.XPATH, path, iframe=param["iframe"]) - elements = self.browser.find_elements( - By.XPATH, path, iframe=param["iframe"]) - element = elements[index] - if param["beforeJS"] != "": - self.execute_code(2, param["beforeJS"], - param["beforeJSWaitTime"], element, iframe=param["iframe"]) - except: - self.print_and_log("Cannot find element:" + - path + ", please try to set the wait time before executing this operation") - self.print_and_log("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") - tempHandleNum = len(self.browser.window_handles) # 记录之前的窗口位置 - try: - click_way = int(param["clickWay"]) - except: - click_way = 0 - try: - if click_way == 0: # 用selenium的点击方法 - actions = ActionChains(self.browser) # 实例化一个action对象 - actions.click(element).perform() - elif click_way == 1: # 用js的点击方法 - script = 'var result = document.evaluate(`' + path + \ - '`, document, null, XPathResult.ANY_TYPE, null);for(let i=0;i 0: - try: - time.sleep(1.5) - alert = self.browser.switch_to.alert - alertHandleType = int(param["alertHandleType"]) - if alertHandleType == 1: - alert.accept() - self.print_and_log("已点击确认|Clicked OK") - elif alertHandleType == 2: - alert.dismiss() - self.print_and_log("已点击取消|Clicked Cancel") - except Exception as e: - self.print_and_log("找不到弹窗|Cannot find alert") - - # 点击后对该元素执行一段JavaScript代码 - try: - if param["afterJS"] != "": - element = self.browser.find_element( - By.XPATH, path, iframe=param["iframe"]) - self.execute_code(2, param["afterJS"], - param["afterJSWaitTime"], element, iframe=param["iframe"]) - except: - self.print_and_log("Cannot find element:" + path) - self.print_and_log("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") - waitTime = float(param["wait"]) + 0.01 # 点击之后等待 - try: - waitType = int(param["waitType"]) - except: - waitType = 0 - if waitType == 0: # 固定等待时间 - time.sleep(waitTime) - elif waitType == 1: # 随机等待时间 - time.sleep(random.uniform(waitTime * 0.5, waitTime * 1.5)) - if tempHandleNum != len(self.browser.window_handles): # 如果有新标签页的行为发生 - self.browser.switch_to.window( - self.browser.window_handles[-1]) # 跳转到新的标签页 - self.history["handle"] = self.browser.current_window_handle - try: - self.history["index"] = self.browser.execute_script( - "return history.length") - except TimeoutException: - try: - self.browser.execute_script('window.stop()') - except: - pass - self.history["index"] = self.browser.execute_script( - "return history.length") - except Exception as e: - self.print_and_log("History Length Error") - self.history["index"] = 0 - else: - try: - self.history["index"] = self.browser.execute_script( - "return history.length") - except TimeoutException: - try: - self.browser.execute_script('window.stop()') - except: - pass - self.history["index"] = self.browser.execute_script( - "return history.length") - # 如果打开了新窗口,切换到新窗口 - except Exception as e: - self.print_and_log("History Length Error") - self.history["index"] = 0 - self.scrollDown(param) # 根据参数配置向下滚动 - # rt.end() - - def get_content(self, p, element): - content = "" - if p["contentType"] == 0: - # 先处理特殊节点类型 - if p["nodeType"] == 2: - if element.get_attribute("href") != None: - content = element.get_attribute("href") - else: - content = "" - elif p["nodeType"] == 3: - if element.get_attribute("value") != None: - content = element.get_attribute("value") - else: - content = "" - elif p["nodeType"] == 4: # 图片 - if element.get_attribute("src") != None: - content = element.get_attribute("src") - else: - content = "" - try: - downloadPic = p["downloadPic"] - except: - downloadPic = 0 - if downloadPic == 1: - download_image(self, content, "Data/Task_" + - str(self.id) + "/" + self.saveName + "/") - else: # 普通节点 - content = element.text - elif p["contentType"] == 1: # 只采集当期元素下的文本,不包括子元素 - if p["nodeType"] == 2: - if element.get_attribute("href") != None: - content = element.get_attribute("href") - else: - content = "" - elif p["nodeType"] == 3: - if element.get_attribute("value") != None: - content = element.get_attribute("value") - else: - content = "" - elif p["nodeType"] == 4: # 图片 - if element.get_attribute("src") != None: - content = element.get_attribute("src") - else: - content = "" - try: - downloadPic = p["downloadPic"] - except: - downloadPic = 0 - if downloadPic == 1: - download_image(self, content, "Data/Task_" + - str(self.id) + "/" + self.saveName + "/") - else: - command = 'var arr = [];\ - var content = arguments[0];\ - for(var i = 0, len = content.childNodes.length; i < len; i++) {\ - if(content.childNodes[i].nodeType === 3){ \ - arr.push(content.childNodes[i].nodeValue);\ - }\ - }\ - var str = arr.join(" "); \ - return str;' - content = self.browser.execute_script(command, element).replace( - "\n", "").replace("\\s+", " ") - elif p["contentType"] == 2: - content = element.get_attribute('innerHTML') - elif p["contentType"] == 3: - content = element.get_attribute('outerHTML') - elif p["contentType"] == 4: - # 获取元素的背景图片地址 - bg_url = element.value_of_css_property('background-image') - # 清除背景图片地址中的多余字符 - bg_url = bg_url.replace('url("', '').replace('")', '') - content = bg_url - elif p["contentType"] == 5: - content = self.browser.current_url - elif p["contentType"] == 6: - content = self.browser.title - elif p["contentType"] == 7: - # 获取整个网页的高度和宽度 - height = self.browser.execute_script( - "return document.body.scrollHeight") - width = self.browser.execute_script( - "return document.body.scrollWidth") - # 调整浏览器窗口的大小 - self.browser.set_window_size(width, height) - element.screenshot("Data/Task_" + str(self.id) + "/" + self.saveName + - "/" + str(time.time()) + ".png") - elif p["contentType"] == 8: - try: - screenshot = element.screenshot_as_png - screenshot_stream = io.BytesIO(screenshot) - # 使用Pillow库打开截图,并转换为灰度图像 - image = Image.open(screenshot_stream).convert('L') - temp_name = "OCR_" + str(time.time()) + ".png" - location = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + "/" + temp_name - image.save(location) - ocr = DdddOcr() - with open(location, 'rb') as f: - image_bytes = f.read() - content = ocr.classification(image_bytes) - os.remove(location) - # 使用Tesseract OCR引擎识别图像中的文本 - # content = pytesseract.image_to_string(image, lang='chi_sim+eng') - except Exception as e: - # try: - # self.print_and_log(e) - # self.print_and_log("识别中文失败,尝试只识别英文") - # self.print_and_log("Failed to recognize Chinese, try to recognize English only") - # screenshot = element.screenshot_as_png - # screenshot_stream = io.BytesIO(screenshot) - # # 使用Pillow库打开截图,并转换为灰度图像 - # image = Image.open(screenshot_stream).convert('L') - # # 使用Tesseract OCR引擎识别图像中的文本 - # # content = pytesseract.image_to_string(image, lang='eng') - # except Exception as e: - content = "OCR Error" - self.print_and_log(e) - # if sys.platform == "win32": - # self.print_and_log("要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501") - # self.print_and_log("\nhttps://www.bilibili.com/video/BV1GP411y7u4/") - # elif sys.platform == "darwin": - # self.print_and_log( - # "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/146044810") - # elif sys.platform == "linux": - # self.print_and_log( - # "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/420259031") - # else: - # self.print_and_log("注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501") - # self.print_and_log("\nhttps://www.bilibili.com/video/BV1GP411y7u4/") - # self.print_and_log("To use OCR, You need to install Tesseract-OCR and add it to the environment variable PATH (need to restart EasySpider after you put in PATH): https://tesseract-ocr.github.io/tessdoc/Installation.html") - elif p["contentType"] == 9: - content = self.execute_code( - 2, p["JS"], p["JSWaitTime"], element, iframe=p["iframe"]) - elif p["contentType"] == 12: # 系统命令返回值 - content = self.execute_code(1, p["JS"], p["JSWaitTime"]) - elif p["contentType"] == 13: # eval返回值 - content = self.execute_code(6, p["JS"], p["JSWaitTime"]) - elif p["contentType"] == 10: # 下拉框选中的值 - try: - select_element = Select(element) - content = select_element.first_selected_option.get_attribute( - "value") - except: - content = "" - elif p["contentType"] == 11: # 下拉框选中的文本 - try: - select_element = Select(element) - content = select_element.first_selected_option.text - except: - content = "" - elif p["contentType"] == 14: # 元素属性值 - attribute_name = p["JS"] - try: - content = element.get_attribute(attribute_name) - except: - content = "" - return content - - def clearOutputParameters(self): - for key in self.outputParameters: - self.outputParameters[key] = "" - self.recordLog("清空输出参数|Clear output parameters") - - # 提取数据事件 - def getData(self, param, loopElement, isInLoop=True, parentPath="", index=0): - parentPath = replace_field_values( - parentPath, self.outputParameters, self) - if param["clear"] == 1: - self.clearOutputParameters() - try: - pageHTML = etree.HTML(self.browser.page_source) - except: - pageHTML = etree.HTML("") - if loopElement != "": # 只在数据在循环中提取时才需要获取循环元素 - try: - loopElementOuterHTML = loopElement.get_attribute('outerHTML') - except: - try: # 循环点击每个链接如果没有新标签页打开,loopElement会丢失,此时需要重新获取 - elements = self.browser.find_elements( - By.XPATH, parentPath, iframe=param["params"][0]["iframe"]) - loopElement = elements[index] - loopElementOuterHTML = loopElement.get_attribute( - 'outerHTML') - except: - loopElementOuterHTML = "" - else: - loopElementOuterHTML = "" - loopElementHTML = etree.HTML(loopElementOuterHTML) - for p in param["params"]: - if p["optimizable"]: - try: - relativeXPath = replace_field_values( - p["relativeXPath"], self.outputParameters, self) - # 只有当前环境不变变化才可以快速提取数据 - if self.browser.iframe_env != p["iframe"]: - p["optimizable"] = False - continue - # relativeXPath = relativeXPath.lower() - # relativeXPath = lowercase_tags_in_xpath(relativeXPath) - # 已经有text()或@href了,不需要再加 - content_type = "" - if relativeXPath.find("/@href") >= 0 or relativeXPath.find("/text()") >= 0 or relativeXPath.find( - "::text()") >= 0: - content_type = "" - elif p["nodeType"] == 2: - content_type = "//@href" - elif p["contentType"] == 1: - content_type = "/text()" - elif p["contentType"] == 0: - content_type = "//text()" - xpath = relativeXPath + content_type - if p["relative"]: - # if relativeXPath == "": - # content = [loopElementHTML] - # else: - # 如果字串里有//即子孙查找,则不动语句 - if relativeXPath.find("//") >= 0: - if xpath.startswith("/"): - full_path = "(" + parentPath + ")" + \ - "[" + str(index + 1) + "]" + \ - relativeXPath + content_type - else: # 如果是id()这种形式,不需要包parentPath - full_path = xpath - try: - content = pageHTML.xpath(full_path) - except: - content = [] - # 如果是id()这种形式,不需要包/html/body - elif not relativeXPath.startswith("/"): - try: - content = loopElementHTML.xpath(xpath) - except: - content = [] - else: - content = loopElementHTML.xpath( - "/html/body/" + loopElementHTML[0][0].tag + xpath) - else: - # 如果是id()或(//div)[1]这种形式,不需要包/html/body - if xpath.find("/body") < 0 and xpath.startswith("/"): - xpath = "/html/body" + xpath - content = pageHTML.xpath(xpath) - if len(content) > 0: - # html = etree.tostring(content[0], encoding='utf-8').decode('utf-8') - # 拼接所有文本内容并去掉两边的空白 - content = ' '.join(result.strip() - for result in content if result.strip()) - if p["nodeType"] == 2: - base_url = self.browser.current_url - # 合并链接相对路径为绝对路径 - content = urljoin(base_url, content) - else: - content = p["default"] - if not self.dataNotFoundKeys[p["name"]]: - self.print_and_log( - 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - relativeXPath, p["name"])) - self.print_and_log( - "提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( - p["name"], relativeXPath)) - self.dataNotFoundKeys[p["name"]] = True - except Exception as e: - if not self.dataNotFoundKeys[p["name"]]: - self.print_and_log( - 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - relativeXPath, p["name"])) - self.print_and_log( - "提取数据操作时,字段名 %s 对应XPath %s 未找到(请查看原因,如是否翻页太快页面元素未加载出来),使用默认值,本字段将不再重复报错" % ( - p["name"], relativeXPath)) - self.dataNotFoundKeys[p["name"]] = True - try: - self.outputParameters[p["name"]] = content - except: - self.outputParameters[p["name"]] = p["default"] - # 对于不能优化的操作,使用selenium执行 - for p in param["params"]: - if not p["optimizable"]: - content = "" - relativeXPath = replace_field_values( - p["relativeXPath"], self.outputParameters, self) - if not (p["contentType"] == 5 or p["contentType"] == 6): # 如果不是页面标题或URL,去找元素 - try: - # relativeXPath = relativeXPath.lower() - # relativeXPath = lowercase_tags_in_xpath(relativeXPath) - if p["relative"]: # 是否相对xpath - if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 - element = loopElement - else: - # 如果字串里有//即子孙查找,则不动语句 - if relativeXPath.find("//") >= 0: - # full_path = "(" + parentPath + \ - # relativeXPath + ")" + \ - # "[" + str(index + 1) + "]" - full_path = "(" + parentPath + ")" + \ - "[" + str(index + 1) + "]" + \ - relativeXPath - element = self.browser.find_element( - By.XPATH, full_path, iframe=p["iframe"]) - else: - element = loopElement.find_element(By.XPATH, - relativeXPath[1:]) - else: - element = self.browser.find_element( - By.XPATH, relativeXPath, iframe=p["iframe"]) - except ( - NoSuchElementException, InvalidSelectorException, StaleElementReferenceException): # 找不到元素的时候,使用默认值 - # self.print_and_log(p) - try: - content = p["default"] - except Exception as e: - content = "" - self.outputParameters[p["name"]] = content - try: - if not self.dataNotFoundKeys[p["name"]]: - self.print_and_log( - 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - relativeXPath, p["name"])) - self.print_and_log( - "提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( - p["name"], relativeXPath)) - except: - pass - continue - except TimeoutException: # 超时的时候设置超时值 - self.print_and_log( - 'Time out after set seconds when getting data') - try: - self.browser.execute_script('window.stop()') - except: - pass - if p["relative"]: # 是否相对xpath - if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 - element = loopElement - else: - element = loopElement.find_element(By.XPATH, - relativeXPath[1:]) - else: - element = self.browser.find_element( - By.XPATH, relativeXPath, iframe=p["iframe"]) - # rt.end() - else: - element = self.browser.find_element( - By.XPATH, "//body", iframe=p["iframe"]) - try: - self.execute_code( - 2, p["beforeJS"], p["beforeJSWaitTime"], element, iframe=p["iframe"]) # 执行前置js - content = self.get_content(p, element) - except StaleElementReferenceException: # 发生找不到元素的异常后,等待几秒重新查找 - self.recordLog( - 'StaleElementReferenceException: ' + relativeXPath) - time.sleep(3) - try: - if p["relative"]: # 是否相对xpath - if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 - element = loopElement - self.recordLog( - 'StaleElementReferenceException: loopElement') - else: - element = loopElement.find_element(By.XPATH, - relativeXPath[1:]) - self.recordLog( - 'StaleElementReferenceException: loopElement+relativeXPath') - else: - element = self.browser.find_element( - By.XPATH, relativeXPath, iframe=p["iframe"]) - self.recordLog( - 'StaleElementReferenceException: relativeXPath') - content = self.get_content(p, element) - except StaleElementReferenceException: - self.recordLog( - 'StaleElementReferenceException: ' + relativeXPath) - continue # 再出现类似问题直接跳过 - self.outputParameters[p["name"]] = content - self.execute_code( - 2, p["afterJS"], p["afterJSWaitTime"], element, iframe=p["iframe"]) # 执行后置JS - if param["recordASField"] > 0 and param["newLine"]: - line = new_line(self.outputParameters, - self.maxViewLength, self.outputParametersRecord) - self.OUTPUT.append(line) - -if __name__ == '__main__': - from multiprocessing import freeze_support - freeze_support() # 防止无限死循环多开 - # 如果需要调试程序,请在命令行参数中加入--keyboard 0 来禁用键盘监听以提升调试速度 - # If you need to debug the program, please add --keyboard 0 in the command line parameters to disable keyboard listening to improve debugging speed - config = { - "ids": [0], - "saved_file_name": "", - "user_data": False, - "config_folder": "", - "config_file_name": "config.json", - "read_type": "remote", - "headless": False, - "server_address": "http://localhost:8074", - "keyboard": True, # 是否监听键盘输入 - "version": "0.6.0", - } - c = Config(config) - print(c) - options = webdriver.ChromeOptions() - driver_path = "chromedriver.exe" - import platform - - print(sys.platform, platform.architecture()) - # option = webdriver.ChromeOptions() - if not os.path.exists(os.getcwd() + "/Data"): - os.mkdir(os.getcwd() + "/Data") - if sys.platform == "darwin" and platform.architecture()[0] == "64bit": - options.binary_location = "EasySpider.app/Contents/Resources/app/chrome_mac64.app/Contents/MacOS/Google Chrome" - # MacOS需要用option而不是options! - # option.binary_location = "EasySpider.app/Contents/Resources/app/chrome_mac64.app/Contents/MacOS/Google Chrome" - # option.add_extension( - # "EasySpider.app/Contents/Resources/app/XPathHelper.crx") - options.add_extension( - "EasySpider.app/Contents/Resources/app/XPathHelper.crx") - driver_path = "EasySpider.app/Contents/Resources/app/chromedriver_mac64" - # options.binary_location = "chrome_mac64.app/Contents/MacOS/Google Chrome" - # # MacOS需要用option而不是options! - # option.binary_location = "chrome_mac64.app/Contents/MacOS/Google Chrome" - # driver_path = os.getcwd()+ "/chromedriver_mac64" - print(driver_path) - if c.config_folder == "": - c.config_folder = os.path.expanduser( - "~/Library/Application Support/EasySpider/") - # print("Config folder for MacOS:", c.config_folder) - elif os.path.exists(os.getcwd() + "/EasySpider/resources"): # 打包后的路径 - print("Finding chromedriver in EasySpider", - os.getcwd() + "/EasySpider") - if sys.platform == "win32" and platform.architecture()[0] == "32bit": - options.binary_location = os.path.join( - os.getcwd(), "EasySpider/resources/app/chrome_win32/chrome.exe") # 指定chrome位置 - # option.binary_location = os.path.join( - # os.getcwd(), "EasySpider/resources/app/chrome_win32/chrome.exe") # 指定chrome位置 - driver_path = os.path.join( - os.getcwd(), "EasySpider/resources/app/chrome_win32/chromedriver_win32.exe") - # option.add_extension("EasySpider/resources/app/XPathHelper.crx") - options.add_extension("EasySpider/resources/app/XPathHelper.crx") - elif sys.platform == "win32" and platform.architecture()[0] == "64bit": - options.binary_location = os.path.join( - os.getcwd(), "EasySpider/resources/app/chrome_win64/chrome.exe") - # option.binary_location = os.path.join( - # os.getcwd(), "EasySpider/resources/app/chrome_win64/chrome.exe") - driver_path = os.path.join( - os.getcwd(), "EasySpider/resources/app/chrome_win64/chromedriver_win64.exe") - # option.add_extension("EasySpider/resources/app/XPathHelper.crx") - options.add_extension("EasySpider/resources/app/XPathHelper.crx") - elif sys.platform == "linux" and platform.architecture()[0] == "64bit": - options.binary_location = "EasySpider/resources/app/chrome_linux64/chrome" - # option.binary_location = "EasySpider/resources/app/chrome_linux64/chrome" - driver_path = "EasySpider/resources/app/chrome_linux64/chromedriver_linux64" - # option.add_extension("EasySpider/resources/app/XPathHelper.crx") - options.add_extension("EasySpider/resources/app/XPathHelper.crx") - else: - print("Unsupported platform") - sys.exit() - print("Chrome location:", options.binary_location) - print("Chromedriver location:", driver_path) - # elif os.getcwd().find("ExecuteStage") >= 0: # 如果直接执行 - # print("Finding chromedriver in ./Chrome", - # os.getcwd()+"/Chrome") - # options.binary_location = "./Chrome/chrome.exe" # 指定chrome位置 - # # option.binary_location = "C:\\Users\\q9823\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe" - # driver_path = "./Chrome/chromedriver.exe" - elif os.path.exists(os.getcwd() + "/../ElectronJS"): - # 软件dev用 - print("Finding chromedriver in EasySpider", - os.getcwd() + "/ElectronJS") - # option.binary_location = "../ElectronJS/chrome_win64/chrome.exe" # 指定chrome位置 - options.binary_location = "../ElectronJS/chrome_win64/chrome.exe" # 指定chrome位置 - driver_path = "../ElectronJS/chrome_win64/chromedriver_win64.exe" - # option.add_extension("../ElectronJS/XPathHelper.crx") - options.add_extension("../ElectronJS/XPathHelper.crx") - else: - options.binary_location = "./chrome.exe" # 指定chrome位置 - # option.binary_location = "./chrome.exe" # 指定chrome位置 - driver_path = "./chromedriver.exe" - # option.add_extension("XPathHelper.crx") - options.add_extension("XPathHelper.crx") - - # option.add_experimental_option( - # 'excludeSwitches', ['enable-automation']) # 以开发者模式 - options.add_experimental_option( - 'excludeSwitches', ['enable-automation']) # 以开发者模式 - - # user_data_dir = r'' # 注意没有Default! - - # options.add_argument('--user-data-dir='+p) - - # 总结: - # 0. 带Cookie需要用userdatadir - # 1. chrome_options才是配置用户文件和chrome文件地址的正确选项 - # 2. User Profile文件夹的路径是:C:\Users\用户名\AppData\Local\Google\Chrome\User Data不要加Default - # 3. 就算User Profile相同,chrome版本不同所存储的cookie信息也不同,也不能爬 - # 4. TMALL如果一直弹出验证码,而且无法通过验证,那么需要在其他浏览器上用 - try: - with open(c.config_folder + c.config_file_name, "r", encoding='utf-8') as f: - config = json.load(f) - print("Config file path: " + - c.config_folder + c.config_file_name) - absolute_user_data_folder = config["absolute_user_data_folder"] - except: - pass - - # options.add_argument( - # '--user-data-dir=C:\\Users\\q9823\\AppData\\Local\\Google\\Chrome\\User Data') # TMALL 反扒 - # option.add_argument( - # "--disable-blink-features=AutomationControlled") # TMALL 反扒 - options.add_argument( - "--disable-blink-features=AutomationControlled") # TMALL 反扒 - - options.add_argument('-ignore-certificate-errors') - options.add_argument('-ignore -ssl-errors') - # option.add_argument('-ignore-certificate-errors') - # option.add_argument('-ignore -ssl-errors') - - if c.headless: - print("Headless mode") - print("无头模式") - # option.add_argument("--headless") - options.add_argument("--headless") - - tmp_options = [] - for id in c.ids: - tmp_options.append({"options": copy.deepcopy(options), "tmp_user_data_folder": ""}) - - if c.user_data: - tmp_user_folder_parent = os.path.join(os.getcwd(), "TempUserDataFolder") - if not os.path.exists(tmp_user_folder_parent): - os.mkdir(tmp_user_folder_parent) - characters = string.ascii_letters + string.digits - for i in range(len(c.ids)): - id = c.ids[i] - # 从字符集中随机选择字符构成字符串 - random_string = ''.join(random.choice(characters) for i in range(10)) - tmp_user_data_folder = os.path.join(tmp_user_folder_parent, "user_data_" + str(id) + "_" + str(time.time()).replace(".","") + "_" + random_string) - tmp_options[i]["tmp_user_data_folder"] = tmp_user_data_folder - if os.path.exists(tmp_user_data_folder): - shutil.rmtree(tmp_user_data_folder) - print(f"Copying user data folder to: {tmp_user_data_folder}, please wait...") - print(f"正在复制用户信息目录到: {tmp_user_data_folder},请稍等...") - shutil.copytree(absolute_user_data_folder, tmp_user_data_folder) - print("User data folder copied successfully, if you exit the program before it finishes, please delete the temporary user data folder manually.") - print("用户信息目录复制成功,如果程序在运行过程中被手动退出,请手动删除临时用户信息目录。") - # option = tmp_options[i]["option"] - options = tmp_options[i]["options"] - # option.add_argument( - # f'--user-data-dir={tmp_user_data_folder}') # TMALL 反扒 - # option.add_argument("--profile-directory=Default") - options.add_argument( - f'--user-data-dir={tmp_user_data_folder}') # TMALL 反扒 - options.add_argument("--profile-directory=Default") - print( - "如果报错Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally,说明有之前运行的Chrome实例没有正常关闭,请关闭之前打开的所有Chrome实例后再运行程序即可。") - print( - "If you get an error Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally, it means that there is a Chrome instance that was not closed properly before, please close all Chrome instances that were opened before running the program.") - - threads = [] - for i in range(len(c.ids)): - id = c.ids[i] - # option = tmp_options[i]["option"] - options = tmp_options[i]["options"] - print("id: ", id) - if c.read_type == "remote": - print("remote") - content = requests.get( - c.server_address + "/queryExecutionInstance?id=" + str(id)) - service = json.loads(content.text) # 加载服务信息 - else: - print("local") - with open("execution_instances/" + str(id) + ".json", 'r', encoding='utf-8') as f: - content = f.read() - service = json.loads(content) # 加载服务信息 - try: - print("Task Name:", service["name"]) - print("任务名称:", service["name"]) - except: - print(f"Cannot find task with id: {str(id)}, please check whether {str(id)}.json exists in the 'execution_instances' folder.") - print(f"未找到id为{str(id)}的任务,请检查'execution_instances'文件夹中是否存在{str(id)}.json文件。") - continue - try: - cloudflare = service["cloudflare"] - except: - cloudflare = 0 - if cloudflare == 0: - options.add_argument('log-level=3') # 隐藏日志 - # option.add_argument('log-level=3') # 隐藏日志 - path = os.path.join(os.path.abspath("./"), "Data", "Task_" + str(id)) - print("Data path:", path) - options.add_experimental_option("prefs", { - # 设置文件下载路径 - "download.default_directory": path, - "download.prompt_for_download": False, # 禁止下载提示框 - "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], - "download.directory_upgrade": True, - "download.extensions_to_open": "applications/pdf", - "plugins.always_open_pdf_externally": True, # 总是在外部程序中打开PDF - "safebrowsing_for_trusted_sources_enabled": False, - "safebrowsing.enabled": False, - 'safebrowsing.disable_download_protection': True, - 'profile.default_content_settings.popups': 0, - }) - # option.add_experimental_option("prefs", { - # # 设置文件下载路径 - # "download.default_directory": path, - # "download.prompt_for_download": False, # 禁止下载提示框 - # "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], - # "download.directory_upgrade": True, - # "download.extensions_to_open": "applications/pdf", - # "plugins.always_open_pdf_externally": True, # 总是在外部程序中打开PDF - # "safebrowsing_for_trusted_sources_enabled": False, - # "safebrowsing.enabled": False, - # 'safebrowsing.enabled': False, - # 'safebrowsing.disable_download_protection': True, - # 'profile.default_content_settings.popups': 0, - # }) - try: - if service["environment"] == 1: - # option.add_experimental_option( - # 'mobileEmulation', {'deviceName': 'iPhone X'}) # 模拟iPhone X浏览 - options.add_experimental_option( - 'mobileEmulation', {'deviceName': 'iPhone X'}) # 模拟iPhone X浏览 - except: - pass - # browser_t = MyChrome( - # options=options, chrome_options=option, executable_path=driver_path) - selenium_service = Service(executable_path=driver_path) - browser_t = MyChrome(service=selenium_service, options=options) - elif cloudflare == 1: - if sys.platform == "win32": - options.binary_location = "C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe" # 需要用自己的浏览器 - # options.add_argument("--auto-open-devtools-for-tabs") - # options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" # 需要用自己的浏览器 - browser_t = MyUCChrome( - options=options, driver_executable_path=driver_path) - links = list(filter(isnotnull, service["links"].split("\n"))) - # open page in new tab - browser_t.execute_script( - 'window.open("' + links[0] + '","_blank");') - time.sleep(5) # wait until page has loaded - browser_t.switch_to.window( - browser_t.window_handles[1]) # switch to new tab - # browser_t = uc.Chrome() - else: - print("Cloudflare模式只支持Windows x64平台。") - print( - "Cloudflare Mode only support on Windows x64 platform.") - sys.exit() - event = Event() - event.set() - thread = BrowserThread(browser_t, id, service, - c.version, event, c.saved_file_name, config=config, option=tmp_options[i]) - print("Thread with task id: ", id, " is created") - threads.append(thread) - thread.start() - # Set the pause operation - # if sys.platform != "linux": - # time.sleep(3) - # Thread(target=check_pause, args=("p", event)).start() - # else: - time.sleep(3) - try: - pause_key = service["pauseKey"] - except: - pause_key = "p" - press_time = {"duration": 0, "is_pressed": False, "pause_key": pause_key} - print("\n\n----------------------------------") - print( - "正在运行任务,长按键盘" + pause_key + "键可暂停任务的执行以便手工操作浏览器如输入验证码;如果想恢复任务的执行,请再次长按" + pause_key + "键。") - print( - "Running task, long press '" + pause_key + "' to pause the task for manual operation of the browser such as entering the verification code; If you want to resume the execution of the task, please long press '" + pause_key + "' again.") - print("----------------------------------\n\n") - # if cloudflare: - # print("过Cloudflare验证模式有时候会不稳定,如果无法通过验证则需要隔几分钟重试一次,或者可以更换新的用户信息文件夹再执行任务。") - # print("Passing the Cloudflare verification mode is sometimes unstable. If the verification fails, you need to try again every few minutes, or you can change to a new user information folder and then execute the task.") - # 使用监听器监听键盘输入 - try: - if c.keyboard: - with Listener(on_press=on_press_creator(press_time, event), - on_release=on_release_creator(event, press_time)) as listener: - listener.join() - except: - pass - # print("您的操作系统不支持暂停功能。") - # print("Your operating system does not support the pause function.") - - # print("线程长度:", len(threads) ) - - for thread in threads: - print() - thread.join() diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/myChrome.py b/.temp_to_pub/EasySpider_MacOS_all_arch/Code/myChrome.py deleted file mode 100644 index 7934e52..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/myChrome.py +++ /dev/null @@ -1,181 +0,0 @@ -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.action_chains import ActionChains -from selenium import webdriver -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC -from selenium.webdriver.common.by import By -from selenium.common.exceptions import NoSuchElementException -from selenium.common.exceptions import TimeoutException -from selenium.common.exceptions import StaleElementReferenceException, InvalidSelectorException -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities -from selenium.webdriver.support.ui import Select -from selenium.webdriver import ActionChains -from selenium.webdriver.common.by import By -import sys - -desired_capabilities = DesiredCapabilities.CHROME -desired_capabilities["pageLoadStrategy"] = "none" - - - -class MyChrome(webdriver.Chrome): - - def __init__(self, *args, **kwargs): - self.iframe_env = False # 现在的环境是root还是iframe - super().__init__(*args, **kwargs) # 调用父类的 __init__ - - def find_element(self, by=By.ID, value=None, iframe=False): - # 在这里改变查找元素的行为 - if self.iframe_env: - super().switch_to.default_content() - self.iframe_env = False - if iframe: - # 获取所有的 iframe - try: - iframes = super().find_elements(By.CSS_SELECTOR, "iframe") - except Exception as e: - print(e) - find_element = False - # 遍历所有的 iframe 并查找里面的元素 - for iframe in iframes: - # 切换到 iframe - super().switch_to.default_content() - super().switch_to.frame(iframe) - self.iframe_env = True - try: - # 在 iframe 中查找元素 - # 在这个例子中,我们查找 XPath 为 '//div[1]' 的元素 - element = super().find_element(by=by, value=value) - find_element = True - except NoSuchElementException as e: - print(f"No such element found in the iframe: {str(e)}") - except Exception as e: - print(f"Exception: {str(e)}") - # 完成操作后切回主文档 - # super().switch_to.default_content() - if find_element: - return element - if not find_element: - raise NoSuchElementException - else: - return super().find_element(by=by, value=value) - - def find_elements(self, by=By.ID, value=None, iframe=False): - # 在这里改变查找元素的行为 - if self.iframe_env: - super().switch_to.default_content() - self.iframe_env = False - if iframe: - # 获取所有的 iframe - iframes = super().find_elements(By.CSS_SELECTOR, "iframe") - find_element = False - # 遍历所有的 iframe 并找到里面的元素 - for iframe in iframes: - # 切换到 iframe - try: - super().switch_to.default_content() - super().switch_to.frame(iframe) - self.iframe_env = True - # 在 iframe 中查找元素 - # 在这个例子中,我们查找 XPath 为 '//div[1]' 的元素 - elements = super().find_elements(by=by, value=value) - if len(elements) > 0: - find_element = True - # 完成操作后切回主文档 - # super().switch_to.default_content() - if find_element: - return elements - except NoSuchElementException as e: - print(f"No such element found in the iframe: {str(e)}") - except Exception as e: - print(f"Exception: {str(e)}") - if not find_element: - raise NoSuchElementException - else: - return super().find_elements(by=by, value=value) - -# MacOS不支持直接打包带Cloudflare的功能,如果要自己编译运行,可以把这个if去掉,然后配置好浏览器和driver路径 -if sys.platform != "darwin": - ES = True - if ES: # 用自己写的ES版本 - import undetected_chromedriver_ES as uc - else: - import undetected_chromedriver as uc - - class MyUCChrome(uc.Chrome): - - def __init__(self, *args, **kwargs): - self.iframe_env = False # 现在的环境是root还是iframe - super().__init__(*args, **kwargs) # 调用父类的 __init__ - - def find_element(self, by=By.ID, value=None, iframe=False): - # 在这里改变查找元素的行为 - if self.iframe_env: - super().switch_to.default_content() - self.iframe_env = False - if iframe: - # 获取所有的 iframe - try: - iframes = super().find_elements(By.CSS_SELECTOR, "iframe") - except Exception as e: - print(e) - find_element = False - # 遍历所有的 iframe 并找到里面的元素 - for iframe in iframes: - # 切换到 iframe - super().switch_to.default_content() - super().switch_to.frame(iframe) - self.iframe_env = True - try: - # 在 iframe 中查找元素 - # 在这个例子中,我们查找 XPath 为 '//div[1]' 的元素 - element = super().find_element(by=by, value=value) - find_element = True - except NoSuchElementException as e: - print(f"No such element found in the iframe: {str(e)}") - except Exception as e: - print(f"Exception: {str(e)}") - # 完成操作后切回主文档 - # super().switch_to.default_content() - if find_element: - return element - if not find_element: - raise NoSuchElementException - else: - return super().find_element(by=by, value=value) - - def find_elements(self, by=By.ID, value=None, iframe=False): - # 在这里改变查找元素的行为 - if self.iframe_env: - super().switch_to.default_content() - self.iframe_env = False - if iframe: - # 获取所有的 iframe - iframes = super().find_elements(By.CSS_SELECTOR, "iframe") - find_element = False - # 遍历所有的 iframe 并查找里面的元素 - for iframe in iframes: - # 切换到 iframe - try: - super().switch_to.default_content() - super().switch_to.frame(iframe) - self.iframe_env = True - # 在 iframe 中查找元素 - # 在这个例子中,我们查找 XPath 为 '//div[1]' 的元素 - elements = super().find_elements(by=by, value=value) - if len(elements) > 0: - find_element = True - # 完成操作后切回主文档 - # super().switch_to.default_content() - if find_element: - return elements - except NoSuchElementException as e: - print(f"No such element found in the iframe: {str(e)}") - except Exception as e: - print(f"Exception: {str(e)}") - if not find_element: - raise NoSuchElementException - else: - return super().find_elements(by=by, value=value) - diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/utils.py b/.temp_to_pub/EasySpider_MacOS_all_arch/Code/utils.py deleted file mode 100644 index bdbde15..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Code/utils.py +++ /dev/null @@ -1,449 +0,0 @@ -# 控制流程的暂停和继续 - -import csv -import datetime -import json -import os -import sys -import re -import time -import uuid -# import keyboard -from openpyxl import Workbook, load_workbook -import requests -from urllib.parse import urlparse -import pymysql -from lxml import etree - - -def is_valid_url(url): - try: - result = urlparse(url) - return all([result.scheme, result.netloc]) - except ValueError: - return False - - -def lowercase_tags_in_xpath(xpath): - return re.sub(r"([A-Z]+)(?=[\[\]//]|$)", lambda x: x.group(0).lower(), xpath) - - -def on_press_creator(press_time, event): - def on_press(key): - try: - if key.char == press_time["pause_key"]: - if press_time["is_pressed"] == False: # 没按下p键时,记录按下p键的时间 - press_time["duration"] = time.time() - press_time["is_pressed"] = True - else: # 按下p键时,判断按下p键的时间是否超过2.5秒 - duration = time.time() - press_time["duration"] - if duration > 2: - if event._flag == False: - print("任务执行中,长按" + press_time["pause_key"] + "键暂停执行。") - print("Task is running, long press '" + press_time["pause_key"] + "' to pause.") - # 设置Event的值为True,使得线程b可以继续执行 - event.set() - else: - # 设置Event的值为False,使得线程b暂停执行 - print("任务已暂停,长按" + press_time["pause_key"] + "键继续执行...") - print("Task paused, long press '" + press_time["pause_key"] + "' to continue...") - event.clear() - press_time["duration"] = time.time() - press_time["is_pressed"] = False - # print("按下p键时间:", press_time["duration"]) - except: - pass - return on_press - - -def on_release_creator(event, press_time): - def on_release(key): - try: - # duration = time.time() - press_time["duration"] - # # print("松开p键时间:", time.time(), "Duration: ", duration) - # if duration > 2.5 and key.char == 'p': - # if event._flag == False: - # print("任务执行中,按p键暂停执行。") - # print("Task is running, press 'p' to pause.") - # # 设置Event的值为True,使得线程b可以继续执行 - # event.set() - # else: - # # 设置Event的值为False,使得线程b暂停执行 - # print("任务已暂停,按p键继续执行...") - # print("Task paused, press 'p' to continue...") - # event.clear() - # press_time["duration"] = time.time() - press_time["is_pressed"] = False - except: - pass - return on_release - - -# def check_pause(key, event): -# while True: -# if keyboard.is_pressed(key): # 按下p键,暂停程序 -# if event._flag == False: -# print("任务执行中,长按p键暂停执行。") -# print("Task is running, long press 'p' to pause.") -# # 设置Event的值为True,使得线程b可以继续执行 -# event.set() -# else: -# # 设置Event的值为False,使得线程b暂停执行 -# print("任务已暂停,长按p键继续执行...") -# print("Task paused, press 'p' to continue...") -# event.clear() -# time.sleep(1) # 每秒检查一次 - - -def download_image(browser, url, save_directory): - # 定义浏览器头信息 - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' - } - if is_valid_url(url): - try: - # 发送 GET 请求获取图片数据 - response = requests.get(url, headers=headers) - - # 检查响应状态码是否为成功状态 - if response.status_code == requests.codes.ok: - # 提取文件名 - file_name = url.split('/')[-1].split("?")[0] - - # 生成唯一的新文件名 - new_file_name = file_name + '_' + \ - str(uuid.uuid4()) + '_' + file_name - - # 构建保存路径 - save_path = os.path.join(save_directory, new_file_name) - - # 保存图片到本地 - with open(save_path, 'wb') as file: - file.write(response.content) - - browser.print_and_log("图片已成功下载到:", save_path) - browser.print_and_log( - "The image has been successfully downloaded to:", save_path) - else: - browser.print_and_log("下载图片失败,请检查此图片链接是否有效:", url) - browser.print_and_log( - "Failed to download image, please check if this image link is valid:", url) - except Exception as e: - browser.print_and_log("下载图片失败|Error downloading image: ", e) - else: - browser.print_and_log("下载图片失败,请检查此图片链接是否有效:", url) - browser.print_and_log( - "Failed to download image, please check if this image link is valid:", url) - - -def get_output_code(output): - try: - if output.find("rue") != -1: # 如果返回值中包含true - code = 1 - else: - code = int(output) - except: - code = 0 - return code - -# 判断字段是否为空 - - -def isnotnull(s): - return len(s) != 0 - - -def new_line(outputParameters, maxViewLength, record): - line = [] - i = 0 - for value in outputParameters.values(): - line.append(value) - if record[i]: - print(value[:maxViewLength], " ", end="") - i += 1 - print("") - return line - - -def write_to_csv(file_name, data, record): - with open(file_name, 'a', encoding='utf-8-sig', newline="") as f: - f_csv = csv.writer(f) - for line in data: - to_write = [] - for i in range(len(line)): - if record[i]: - to_write.append(line[i]) - f_csv.writerow(to_write) - f.close() - -def replace_field_values(orginal_text, outputParameters, browser=None): - pattern = r'Field\["([^"]+)"\]' - try: - replaced_text = re.sub( - pattern, lambda match: outputParameters.get(match.group(1), ''), orginal_text) - if re.search(r'eval\(', replaced_text, re.IGNORECASE): # 如果返回值中包含EVAL - replaced_text = replaced_text.replace("self.", "browser.") - pattern = re.compile(r'(?i)eval\("(.+?)"\)') - # 循环替换所有匹配到的eval语句 - while True: - match = pattern.search(replaced_text) - if not match: - break - # 执行eval并将其结果转换为字符串形式 - eval_replaced_text = str(eval(match.group(1))) - # 替换eval语句 - replaced_text = replaced_text.replace(match.group(0), eval_replaced_text) - except Exception as e: - print("eval替换失败,请检查eval语句是否正确。| Failed to replace eval, please check if the eval statement is correct.") - replaced_text = orginal_text - return replaced_text - - -def readCode(code): - if code.startswith("outside:"): - file_name = os.path.join(os.path.abspath("./"), code[8:]) - with open(file_name, 'r', encoding='utf-8-sig') as file_obj: - code = file_obj.read() - return code - -def write_to_json(file_name, data, types, record, keys): - keys = list(keys) - # Prepare empty list for data - data_to_write = [] - # Tranform data and append to list - for line in data: - to_write = {} - for i in range(len(line)): - if types[i] == "int" or types[i] == "bigInt": - try: - line[i] = int(line[i]) - except: - line[i] = 0 - elif types[i] == "double": - try: - line[i] = float(line[i]) - except: - line[i] = 0.0 - if record[i]: - to_write.update({keys[i]: line[i]}) - data_to_write.append(to_write) - - try: - # read data from JSON - with open(file_name, 'r', encoding='utf-8') as f: - json_data = json.load(f) - except: - json_data = [] - - json_data.extend(data_to_write) - - # write data to JSON - with open(file_name, 'w', encoding='utf-8') as f: - json.dump(json_data, f, ensure_ascii=False) - - -def write_to_excel(file_name, data, types, record): - first = False - if os.path.exists(file_name): - # 加载现有的工作簿 - wb = load_workbook(file_name) - ws = wb.active - else: - # 创建新的工作簿和工作表 - wb = Workbook() - ws = wb.active - first = True - # 追加数据到工作表 - for line in data: - if not first: # 如果不是第一行,需要转换数据类型 - for i in range(len(line)): - if types[i] == "int" or types[i] == "bigInt": - try: - line[i] = int(line[i]) - except: - line[i] = 0 - elif types[i] == "double": - try: - line[i] = float(line[i]) - except: - line[i] = 0.0 - else: - first = False - to_write = [] - for i in range(len(line)): - if record[i]: - to_write.append(line[i]) - ws.append(to_write) - # 保存工作簿 - wb.save(file_name) - - -class Time: - def __init__(self, type1=""): - self.t = int(round(time.time() * 1000)) - self.type = type1 - - def end(self): - at = int(round(time.time() * 1000)) - print("Time used for", self.type, ":", at - self.t, "ms") - - -class myMySQL: - def __init__(self, config_file="mysql_config.json"): - # 读取配置文件 - try: - if sys.platform == "darwin": - if config_file.find("./") >= 0: - config_file = config_file.replace("./", "") - config_file = os.path.expanduser( - "~/Library/Application Support/EasySpider/" + config_file) - print("MySQL config file path: ", config_file) - with open(config_file, 'r') as f: - config = json.load(f) - self.host = config["host"] - self.port = config["port"] - self.user = config["username"] - self.passwd = config["password"] - self.db = config["database"] - except Exception as e: - print("读取配置文件失败,请检查配置文件:"+config_file+"是否存在,或配置信息是否有误。") - print("Failed to read configuration file, please check if the configuration file: " + - config_file+" exists, or if the configuration information is incorrect.") - print(e) - self.connect() - - def connect(self): - try: - self.conn = pymysql.connect( - host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db) - print("成功连接到数据库。") - print("Successfully connected to the database.") - except: - print("连接数据库失败,请检查配置文件是否正确。") - print( - "Failed to connect to the database, please check if the configuration file is correct.") - - def create_table(self, table_name, parameters): - self.table_name = table_name - self.field_sql = "(" - cursor = self.conn.cursor() - # 检查表是否存在 - cursor.execute("SHOW TABLES LIKE '%s'" % table_name) - result = cursor.fetchone() - - sql = "CREATE TABLE " + table_name + \ - " (_id INT AUTO_INCREMENT PRIMARY KEY, " - for item in parameters: - if item["recordASField"]: - name = item['name'] - if item['type'] == 'int': - sql += f"{name} INT, " - elif item['type'] == 'double': - sql += f"{name} DOUBLE, " - elif item['type'] == 'text': - sql += f"{name} TEXT, " - elif item['type'] == 'mediumText': - sql += f"{name} MEDIUMTEXT, " - elif item['type'] == 'longText': - sql += f"{name} LONGTEXT, " - elif item['type'] == 'datetime': - sql += f"{name} DATETIME, " - elif item['type'] == 'date': - sql += f"{name} DATE, " - elif item['type'] == 'time': - sql += f"{name} TIME, " - elif item['type'] == 'varchar': - sql += f"{name} VARCHAR(255), " - elif item['type'] == 'bigInt': - sql += f"{name} BIGINT, " - self.field_sql += f"{name}, " - # 移除最后的逗号并添加闭合的括号 - sql = sql.rstrip(', ') + ")" - self.field_sql = self.field_sql.rstrip(', ') + ")" - - # 如果表不存在,创建它 - if not result: - # 执行SQL命令 - cursor.execute(sql) - else: - print("数据表" + table_name + "已存在。") - print("The data table " + table_name + " already exists.") - cursor.close() - - def write_to_mysql(self, OUTPUT, record, types): - # 创建一个游标对象 - cursor = self.conn.cursor() - - for line in OUTPUT: - for i in range(len(line)): - if types[i] == "int" or types[i] == "bigInt": - try: - line[i] = int(line[i]) - except: - line[i] = 0 - elif types[i] == "double": - try: - line[i] = float(line[i]) - except: - line[i] = 0.0 - elif types[i] == "datetime": - try: - line[i] = datetime.datetime.strptime( - line[i], '%Y-%m-%d %H:%M:%S') - except: - line[i] = datetime.datetime.strptime( - "1970-01-01 00:00:00", '%Y-%m-%d %H:%M:%S') - elif types[i] == "date": - try: - line[i] = datetime.datetime.strptime( - line[i], '%Y-%m-%d') - except: - line[i] = datetime.datetime.strptime( - "1970-01-01", '%Y-%m-%d') - elif types[i] == "time": - try: - line[i] = datetime.datetime.strptime( - line[i], '%H:%M:%S') - except: - line[i] = datetime.datetime.strptime( - "00:00:00", '%H:%M:%S') - to_write = [] - for i in range(len(line)): - if record[i]: - to_write.append(line[i]) - # 构造插入数据的 SQL 语句 - sql = f"INSERT INTO " + self.table_name + \ - " "+self.field_sql+" VALUES (" - for item in to_write: - sql += "%s, " - # 移除最后的逗号并添加闭合的括号 - sql = sql.rstrip(', ') + ")" - # 执行 SQL 语句 - try: - cursor.execute(sql, to_write) - except pymysql.OperationalError as e: - print("Error:", e) - print("Try to reconnect to the database...") - self.connect() - cursor = self.conn.cursor() # 重新创建游标对象 - cursor.execute(sql, to_write) # 重新执行SQL语句 - # self.write_to_mysql(OUTPUT, record, types) - except Exception as e: - print("Error:", e) - print("Error SQL:", sql, to_write) - print("插入数据库错误,请查看以上的错误提示,然后检查数据的类型是否正确,是否文本过长(超过一万的文本类型要设置为大文本)。") - print("Inserting database error, please check the above error, and then check whether the data type is correct, whether the text is too long (text type over 10,000 should be set to large text).") - print("重新执行任务时,请删除数据库中的数据表" + self.table_name + ",然后再次运行程序。") - print("When re-executing the task, please delete the data table " + - self.table_name + " in the database, and then run the program again.") - - # 提交到数据库执行 - self.conn.commit() - - # 关闭游标和连接 - cursor.close() - - def close(self): - self.conn.close() - print("成功关闭数据库。") - print("Successfully closed the database.") diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/First time open please see this (The package is damaged and cannot verify the developer's solution).txt b/.temp_to_pub/EasySpider_MacOS_all_arch/First time open please see this (The package is damaged and cannot verify the developer's solution).txt deleted file mode 100644 index 7d372b7..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/First time open please see this (The package is damaged and cannot verify the developer's solution).txt +++ /dev/null @@ -1,15 +0,0 @@ -Due to the complex security settings of MacOS, the issue of being unable to open software due to the "unverified developer" message may occur upon the first attempt to open the software. Please refer to the following GitHub document to see how to open software and perform tasks on your MacOS version: - -https://github.com/NaiboWang/EasySpider/wiki/MacOS-Guide - -For the Arm version, if it shows "the package is damaged", you need to use the following command to modify the package attributes: - -xattr -cr Your EasySpider.app file path - -For example: - -xattr -cr /Users/your_username/Downloads/EasySpider_MacOS_all_arch/EasySpider.app - -Then try to open it again. - -File access permissions must be granted, microphone permissions are not necessary at all, and the author is not sure why microphone permissions are being requested, so they can be declined. \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/115.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/115.json deleted file mode 100644 index 64b21dd..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/115.json +++ /dev/null @@ -1,2602 +0,0 @@ -{ - "id": 115, - "name": "网易云音乐", - "url": "https://music.163.com/#/discover/toplist?id=71384707", - "links": "https://music.163.com/#/discover/toplist?id=71384707", - "create_time": "7/4/2023, 7:14:50 AM", - "version": "0.3.5", - "saveThreshold": 10, - "cloudflare": 0, - "environment": 0, - "containJudge": false, - "desc": "https://music.163.com/#/discover/toplist?id=71384707", - "inputParameters": [ - { - "id": 0, - "name": "urlList_0", - "nodeId": 1, - "nodeName": "打开网页", - "value": "https://music.163.com/#/discover/toplist?id=71384707", - "desc": "要采集的网址列表,多行以\\n分开", - "type": "string", - "exampleValue": "https://music.163.com/#/discover/toplist?id=71384707" - } - ], - "outputParameters": [ - { - "id": 0, - "name": "参数1_文本", - "desc": "", - "type": "string", - "exampleValue": "Nocturne No. 2 in E Flat Major, Op. 9, No. 2" - }, - { - "id": 1, - "name": "参数2_文本", - "desc": "", - "type": "string", - "exampleValue": "作曲 : Frédéric François Chopin纯音乐,请欣赏" - }, - { - "id": 2, - "name": "参数3_链接文本", - "desc": "", - "type": "string", - "exampleValue": "" - }, - { - "id": 3, - "name": "参数4_链接地址", - "desc": "", - "type": "string", - "exampleValue": "/user/home?id=6622403" - }, - { - "id": 4, - "name": "参数5_图片地址", - "desc": "", - "type": "string", - "exampleValue": "http://p2.music.126.net/XM9AGb0vN4OSKK4WeZM7aA==/109951165633941106.jpg?param=50y50" - }, - { - "id": 5, - "name": "参数6_文本", - "desc": "", - "type": "string", - "exampleValue": ":建议这种纯音乐,小编在歌词中做简介" - }, - { - "id": 6, - "name": "参数7_链接文本", - "desc": "", - "type": "string", - "exampleValue": "新鑫曼巴" - }, - { - "id": 7, - "name": "参数8_链接地址", - "desc": "", - "type": "string", - "exampleValue": "/user/home?id=6622403" - }, - { - "id": 8, - "name": "参数9_图片地址", - "desc": "", - "type": "string", - "exampleValue": "http://p5.music.126.net/obj/wovDmcKXw6PCn2_CmsOk/17941162599/305d/0dee/968a/22f0de72becf0485ecac1d6a5898825a.png" - }, - { - "id": 9, - "name": "参数10_文本", - "desc": "", - "type": "string", - "exampleValue": "2016年4月18日" - }, - { - "id": 10, - "name": "参数11_链接文本", - "desc": "", - "type": "string", - "exampleValue": "删除" - }, - { - "id": 11, - "name": "参数12_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 12, - "name": "参数13_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 13, - "name": "参数14_链接文本", - "desc": "", - "type": "string", - "exampleValue": " (29844)" - }, - { - "id": 14, - "name": "参数15_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 15, - "name": "参数16_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 16, - "name": "参数17_链接文本", - "desc": "", - "type": "string", - "exampleValue": "回复" - }, - { - "id": 17, - "name": "参数18_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 18, - "name": "参数19_文本", - "desc": "", - "type": "string", - "exampleValue": ":有次我在琴房练琴,练的是一首通俗歌曲改编的钢琴曲。正当我沉醉于自己的琴声时,隔壁忽然传来这首夜曲,那一刻我突然觉得自己练的曲子简直是没法听,于是后半段就没练,坐在琴房听隔壁弹了一个小时夜曲。" - }, - { - "id": 19, - "name": "参数20_文本", - "desc": "", - "type": "string", - "exampleValue": "◆" - }, - { - "id": 20, - "name": "参数21_文本", - "desc": "", - "type": "string", - "exampleValue": "◆" - }, - { - "id": 21, - "name": "参数22_文本", - "desc": "", - "type": "string", - "exampleValue": "2016年4月24日" - }, - { - "id": 22, - "name": "参数23_链接文本", - "desc": "", - "type": "string", - "exampleValue": "删除" - }, - { - "id": 23, - "name": "参数24_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 24, - "name": "参数25_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 25, - "name": "参数26_链接文本", - "desc": "", - "type": "string", - "exampleValue": " (7809)" - }, - { - "id": 26, - "name": "参数27_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 27, - "name": "参数28_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 28, - "name": "参数29_链接文本", - "desc": "", - "type": "string", - "exampleValue": "回复" - }, - { - "id": 29, - "name": "参数30_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 30, - "name": "参数31_图片地址", - "desc": "", - "type": "string", - "exampleValue": "http://s1.music.126.net/style/web2/emt/emoji_13.png" - }, - { - "id": 31, - "name": "参数32_图片地址", - "desc": "", - "type": "string", - "exampleValue": "https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/21892874340/50e6/e81d/5292/2d693cbb98954e28d4d9fdb11be99a8b.png" - }, - { - "id": 32, - "name": "参数33_链接文本", - "desc": "", - "type": "string", - "exampleValue": "网易云音乐" - } - ], - "graph": [ - { - "index": 0, - "id": 0, - "parentId": 0, - "type": -1, - "option": 0, - "title": "root", - "sequence": [1, 10, 11, 12], - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "wait": 0 - }, - "isInLoop": false - }, - { - "id": 1, - "index": 1, - "parentId": 0, - "type": 0, - "option": 1, - "title": "打开网页", - "sequence": [], - "isInLoop": false, - "position": 0, - "parameters": { - "useLoop": false, - "xpath": "", - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "url": "https://music.163.com/#/discover/toplist?id=71384707", - "links": "https://music.163.com/#/discover/toplist?id=71384707", - "maxWaitTime": 100, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1 - } - }, - { - "id": -1, - "index": 2, - "parentId": 0, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[contains(@class, \"user\")]", - "iframe": true, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", - "//div[contains(., '最近更新:06月2')]", - "//DIV[@class='user f-cb']", - "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" - ] - } - }, - { - "id": -1, - "index": 3, - "parentId": 0, - "type": 1, - "option": 8, - "title": "循环", - "sequence": [5, 4], - "isInLoop": false, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[contains(@class, \"user\")]", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 0, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", - "//div[contains(., '最近更新:06月2')]", - "//DIV[@class='user f-cb']", - "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" - ] - } - }, - { - "id": -1, - "index": 4, - "parentId": 3, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": true, - "xpath": "//*[contains(@class, \"user\")]", - "iframe": true, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", - "//div[contains(., '最近更新:06月2')]", - "//DIV[@class='user f-cb']", - "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" - ], - "loopType": 0 - } - }, - { - "id": -1, - "index": 5, - "parentId": 3, - "type": 1, - "option": 8, - "title": "循环", - "sequence": [6, 7, 8], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 1, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": "" - } - }, - { - "id": -1, - "index": 6, - "parentId": 4, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": true, - "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td", - "iframe": true, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "allXPaths": "", - "loopType": 1 - } - }, - { - "id": -1, - "index": 7, - "parentId": 4, - "type": 0, - "option": 4, - "title": "输入文字", - "sequence": [], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[@id=\"auto-id-8mWuLxTMrXQaQCra\"]", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "value": "123", - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[2]/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/textarea[1]", - "//textarea[contains(., '')]", - "id(\"auto-id-8mWuLxTMrXQaQCra\")", - "//TEXTAREA[@class='u-txt area j-flag']", - "/html/body/div[last()-10]/div/div/div/div/div/div/div[last()-2]/div/div/div/div[last()-2]/textarea" - ] - } - }, - { - "id": -1, - "index": 8, - "parentId": 4, - "type": 1, - "option": 8, - "title": "循环", - "sequence": [9], - "isInLoop": true, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 1, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]", - "//tr[contains(., '11 NocturE')]", - "id(\"10609141688418212092\")", - "//TR[@class='even js-dis']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]" - ] - } - }, - { - "id": -1, - "index": 9, - "parentId": 8, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数73_文本", - "desc": "", - "relativeXPath": "/td[1]/div[1]/span[1]", - "allXPaths": [ - "/td[1]/div[1]/span[1]", - "//span[contains(., '1')]", - "//SPAN[@class='num']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-3]/div/span" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[1]/div[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数74_文本", - "desc": "", - "relativeXPath": "/td[1]/div[1]/div[1]/span[1]", - "allXPaths": [ - "/td[1]/div[1]/div[1]/span[1]", - "//span[contains(., '1')]", - "//SPAN[@class='ico u-icn u-icn-73 s-fc9']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-3]/div/div/span" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[1]/div[1]/div[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数75_链接文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "" }], - "unique_index": "/td[2]/div[1]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数76_链接地址", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "/song?id=1060914" }], - "unique_index": "/td[2]/div[1]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数77_图片地址", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/a[1]/img[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/a[1]/img[1]", - "//img[contains(., '')]", - "//IMG[@class='rpic']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a/img" - ], - "exampleValues": [ - { - "num": 0, - "value": "http://p1.music.126.net/Dvhon4mH7qimTtE7q3omTw==/1419469524716144.jpg?param=50y50&quality=100" - } - ], - "unique_index": "/td[2]/div[1]/div[1]/a[1]/img[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数78_链接文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "//a[contains(., 'NocturEJpn')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a" - ], - "exampleValues": [ - { - "num": 0, - "value": "NocturEJpne No. 2 in E Flat Major, Op. 9, No. 2" - } - ], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数79_链接地址", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "//a[contains(., 'NocturEJpn')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a" - ], - "exampleValues": [{ "num": 0, "value": "/song?id=1060914" }], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数80_文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "//b[contains(., 'NocturEJpn')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a/b" - ], - "exampleValues": [ - { "num": 0, "value": "NocturneNo.2inEFlatMajor,Op.9,No.2" } - ], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数81_文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", - "//div[contains(., 'EJp')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a/b/div" - ], - "exampleValues": [{ "num": 0, "value": "EJp" }], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数82_文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", - "//span[contains(., '- (降E大调第2')]", - "//SPAN[@class='s-fc8']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/span" - ], - "exampleValues": [ - { "num": 0, "value": "-(降E大调第2号夜曲,作品9)" } - ], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数83_文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", - "//div[contains(., '函潖奪')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/span/div" - ], - "exampleValues": [{ "num": 0, "value": "函潖奪" }], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数84_文本", - "desc": "", - "relativeXPath": "/td[3]/span[1]", - "allXPaths": [ - "/td[3]/span[1]", - "//span[contains(., '04:26')]", - "//SPAN[@class='u-dur ']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/span" - ], - "exampleValues": [{ "num": 0, "value": "04:26" }], - "unique_index": "/td[3]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数85_链接文本", - "desc": "", - "relativeXPath": "/td[3]/div[1]/a[1]", - "allXPaths": [ - "/td[3]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='u-icn u-icn-81 icn-add']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/a" - ], - "exampleValues": [{ "num": 0, "value": "" }], - "unique_index": "/td[3]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数86_链接地址", - "desc": "", - "relativeXPath": "/td[3]/div[1]/a[1]", - "allXPaths": [ - "/td[3]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='u-icn u-icn-81 icn-add']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/a" - ], - "exampleValues": [{ "num": 0, "value": "javascript:;" }], - "unique_index": "/td[3]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数87_文本", - "desc": "", - "relativeXPath": "/td[3]/div[1]/span[2]", - "allXPaths": [ - "/td[3]/div[1]/span[2]", - "//span[contains(., '分享')]", - "//SPAN[@class='icn icn-share']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/span[last()-1]" - ], - "exampleValues": [{ "num": 0, "value": "分享" }], - "unique_index": "/td[3]/div[1]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数88_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[1]", - "//a[contains(., 'Arthur Rub')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a" - ], - "exampleValues": [{ "num": 0, "value": "Arthur Rubiwf8knstein" }], - "unique_index": "/td[4]/div[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数89_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[1]", - "//a[contains(., 'Arthur Rub')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a" - ], - "exampleValues": [{ "num": 0, "value": "/artist?id=12541250" }], - "unique_index": "/td[4]/div[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数90_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[1]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[1]/div[1]", - "//div[contains(., 'wf8k')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a/div" - ], - "exampleValues": [{ "num": 0, "value": "wf8k" }], - "unique_index": "/td[4]/div[1]/span[1]/a[1]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数91_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/span[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/span[1]", - "//span[contains(., 'Noble Musi')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-97]/td/div/span/span" - ], - "exampleValues": [{ "num": 2, "value": "NobleMusicProject" }], - "unique_index": "/td[4]/div[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数92_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/span[1]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/span[1]/div[1]", - "//div[contains(., 'fXuJ')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-97]/td/div/span/span/div" - ], - "exampleValues": [{ "num": 2, "value": "fXuJ" }], - "unique_index": "/td[4]/div[1]/span[1]/span[1]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数93_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]", - "//span[contains(., 'JohaNOfnn')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span" - ], - "exampleValues": [{ "num": 12, "value": "/" }], - "unique_index": "/td[4]/div[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数94_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[2]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[2]", - "//a[contains(., 'Chris USne')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a" - ], - "exampleValues": [{ "num": 12, "value": "Chris USnelling" }], - "unique_index": "/td[4]/div[1]/span[1]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数95_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[2]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[2]", - "//a[contains(., 'Chris USne')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a" - ], - "exampleValues": [{ "num": 12, "value": "/artist?id=13065095" }], - "unique_index": "/td[4]/div[1]/span[1]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数96_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[2]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[2]/div[1]", - "//div[contains(., 'U')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a/div" - ], - "exampleValues": [{ "num": 12, "value": "U" }], - "unique_index": "/td[4]/div[1]/span[1]/a[2]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数97_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[3]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[3]", - "//a[contains(., 'Eberhard a')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]" - ], - "exampleValues": [{ "num": 18, "value": "Eberhard aFJFinke" }], - "unique_index": "/td[4]/div[1]/span[1]/a[3]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数98_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[3]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[3]", - "//a[contains(., 'Eberhard a')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]" - ], - "exampleValues": [{ "num": 18, "value": "/artist?id=265005" }], - "unique_index": "/td[4]/div[1]/span[1]/a[3]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数99_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[3]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[3]/div[1]", - "//div[contains(., 'aFJ')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]/div" - ], - "exampleValues": [{ "num": 18, "value": "aFJ" }], - "unique_index": "/td[4]/div[1]/span[1]/a[3]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数100_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[4]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[4]", - "//a[contains(., 'Mstip4Usla')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a" - ], - "exampleValues": [ - { "num": 18, "value": "Mstip4Uslav Rostropovich" } - ], - "unique_index": "/td[4]/div[1]/span[1]/a[4]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数101_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[4]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[4]", - "//a[contains(., 'Mstip4Usla')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a" - ], - "exampleValues": [{ "num": 18, "value": "/artist?id=155815" }], - "unique_index": "/td[4]/div[1]/span[1]/a[4]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数102_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[4]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[4]/div[1]", - "//div[contains(., 'p4U')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a/div" - ], - "exampleValues": [{ "num": 18, "value": "p4U" }], - "unique_index": "/td[4]/div[1]/span[1]/a[4]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数103_文本", - "desc": "", - "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", - "allXPaths": [ - "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", - "//span[contains(., 'MV')]", - "//SPAN[@class='mv']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-62]/td[last()-2]/div/div/div/span/span" - ], - "exampleValues": [{ "num": 37, "value": "MV" }], - "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数104_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[5]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[5]", - "//a[contains(., 'AdIUBrpad')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]" - ], - "exampleValues": [{ "num": 81, "value": "AdIUBrpad Gérecz" }], - "unique_index": "/td[4]/div[1]/span[1]/a[5]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数105_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[5]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[5]", - "//a[contains(., 'AdIUBrpad')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]" - ], - "exampleValues": [{ "num": 81, "value": "/artist?id=213459" }], - "unique_index": "/td[4]/div[1]/span[1]/a[5]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数106_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[5]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[5]/div[1]", - "//div[contains(., 'dIUB')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]/div" - ], - "exampleValues": [{ "num": 81, "value": "dIUB" }], - "unique_index": "/td[4]/div[1]/span[1]/a[5]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数107_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[6]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[6]", - "//a[contains(., 'New Philha')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]" - ], - "exampleValues": [ - { "num": 81, "value": "New Philharmoniali Orchestra" } - ], - "unique_index": "/td[4]/div[1]/span[1]/a[6]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数108_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[6]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[6]", - "//a[contains(., 'New Philha')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]" - ], - "exampleValues": [{ "num": 81, "value": "/artist?id=129486" }], - "unique_index": "/td[4]/div[1]/span[1]/a[6]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数109_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[6]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[6]/div[1]", - "//div[contains(., 'li')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]/div" - ], - "exampleValues": [{ "num": 81, "value": "li" }], - "unique_index": "/td[4]/div[1]/span[1]/a[6]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数110_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[7]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[7]", - "//a[contains(., 'Edo de Waf')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a" - ], - "exampleValues": [{ "num": 81, "value": "Edo de WafczUart" }], - "unique_index": "/td[4]/div[1]/span[1]/a[7]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数111_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[7]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[7]", - "//a[contains(., 'Edo de Waf')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a" - ], - "exampleValues": [{ "num": 81, "value": "/artist?id=144817" }], - "unique_index": "/td[4]/div[1]/span[1]/a[7]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数112_文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/span[1]/a[7]/div[1]", - "allXPaths": [ - "/td[4]/div[1]/span[1]/a[7]/div[1]", - "//div[contains(., 'fczU')]", - "//DIV[@class='soil']", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a/div" - ], - "exampleValues": [{ "num": 81, "value": "fczU" }], - "unique_index": "/td[4]/div[1]/span[1]/a[7]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - }, - { - "id": 2, - "index": 10, - "parentId": 0, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 3, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[@id=\"10609141688426033070\"]/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "iframe": true, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "//b[contains(., 'Nocturne N')]", - "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a/b" - ] - } - }, - { - "id": 3, - "index": 11, - "parentId": 0, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": false, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 0, - "contentType": 0, - "relative": false, - "name": "参数1_文本", - "desc": "", - "relativeXPath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/em[1]", - "allXPaths": [ - "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/em[1]", - "//em[contains(., 'Nocturne N')]", - "//EM[@class='f-ff2']", - "/html/body/div[last()-8]/div[last()-1]/div/div/div[last()-1]/div[last()-1]/div/div[last()-2]/div/em" - ], - "exampleValues": [ - { - "num": 0, - "value": "Nocturne No. 2 in E Flat Major, Op. 9, No. 2" - } - ], - "unique_index": "8l265os1r85ljnha0rx", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 0, - "relative": false, - "name": "参数2_文本", - "desc": "", - "relativeXPath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[3]", - "allXPaths": [ - "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[3]", - "//div[contains(., '作曲 : Frédé')]", - "id(\"lyric-content\")", - "//DIV[@class='bd bd-open f-brk f-ib']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div[last()-1]/div[last()-1]/div/div" - ], - "exampleValues": [ - { - "num": 0, - "value": "作曲 : Frédéric François Chopin纯音乐,请欣赏" - } - ], - "unique_index": "wo55mnquaokljnha0rx", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - }, - { - "id": 4, - "index": 12, - "parentId": 0, - "type": 1, - "option": 8, - "title": "循环", - "sequence": [13, 14], - "isInLoop": false, - "position": 3, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[2]/div", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 1, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": [ - "/html/body/div[3]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[2]/div[1]", - "//div[contains(., '新鑫曼巴:建议这种纯')]", - "id(\"1430545231688426048755\")", - "//DIV[@class='itm']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]" - ] - } - }, - { - "id": 5, - "index": 13, - "parentId": 4, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数3_链接文本", - "desc": "", - "relativeXPath": "/div[1]/a[1]", - "allXPaths": [ - "/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a" - ], - "exampleValues": [{ "num": 0, "value": "" }], - "unique_index": "/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数4_链接地址", - "desc": "", - "relativeXPath": "/div[1]/a[1]", - "allXPaths": [ - "/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a" - ], - "exampleValues": [{ "num": 0, "value": "/user/home?id=6622403" }], - "unique_index": "/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数5_图片地址", - "desc": "", - "relativeXPath": "/div[1]/a[1]/img[1]", - "allXPaths": [ - "/div[1]/a[1]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a/img" - ], - "exampleValues": [ - { - "num": 0, - "value": "http://p2.music.126.net/XM9AGb0vN4OSKK4WeZM7aA==/109951165633941106.jpg?param=50y50" - } - ], - "unique_index": "/div[1]/a[1]/img[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数6_文本", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]", - "allXPaths": [ - "/div[2]/div[1]/div[1]", - "//div[contains(., '新鑫曼巴:建议这种纯')]", - "//DIV[@class='cnt f-brk']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div" - ], - "exampleValues": [ - { "num": 0, "value": ":建议这种纯音乐,小编在歌词中做简介" } - ], - "unique_index": "/div[2]/div[1]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数7_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '新鑫曼巴')]", - "//A[@class='s-fc7']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/a" - ], - "exampleValues": [{ "num": 0, "value": "新鑫曼巴" }], - "unique_index": "/div[2]/div[1]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数8_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '新鑫曼巴')]", - "//A[@class='s-fc7']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/a" - ], - "exampleValues": [{ "num": 0, "value": "/user/home?id=6622403" }], - "unique_index": "/div[2]/div[1]/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数9_图片地址", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/img[1]", - "allXPaths": [ - "/div[2]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "//IMG[@class='brand-tag brand-vip']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/img" - ], - "exampleValues": [ - { - "num": 0, - "value": "http://p5.music.126.net/obj/wovDmcKXw6PCn2_CmsOk/17941162599/305d/0dee/968a/22f0de72becf0485ecac1d6a5898825a.png" - } - ], - "unique_index": "/div[2]/div[1]/div[1]/img[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数10_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/div[1]", - "allXPaths": [ - "/div[2]/div[2]/div[1]", - "//div[contains(., '2016年4月18日')]", - "//DIV[@class='time s-fc4']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/div" - ], - "exampleValues": [{ "num": 0, "value": "2016年4月18日" }], - "unique_index": "/div[2]/div[2]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数11_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 0, "value": "删除" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数12_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数13_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/span[1]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/span[1]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/span" - ], - "exampleValues": [{ "num": 0, "value": "|" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数14_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/a[1]", - "//a[contains(., '(29844)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 0, "value": " (29844)" }], - "unique_index": "/div[2]/div[2]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数15_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/a[1]", - "//a[contains(., '(29844)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数16_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[2]", - "allXPaths": [ - "/div[2]/div[2]/span[2]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span" - ], - "exampleValues": [{ "num": 0, "value": "|" }], - "unique_index": "/div[2]/div[2]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数17_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[2]", - "allXPaths": [ - "/div[2]/div[2]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "回复" }], - "unique_index": "/div[2]/div[2]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数18_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[2]", - "allXPaths": [ - "/div[2]/div[2]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数19_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]", - "allXPaths": [ - "/div[2]/div[2]", - "//div[contains(., '◆◆_Being_:')]", - "//DIV[@class='que f-brk f-pr s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]" - ], - "exampleValues": [ - { - "num": 6, - "value": ":有次我在琴房练琴,练的是一首通俗歌曲改编的钢琴曲。正当我沉醉于自己的琴声时,隔壁忽然传来这首夜曲,那一刻我突然觉得自己练的曲子简直是没法听,于是后半段就没练,坐在琴房听隔壁弹了一个小时夜曲。" - } - ], - "unique_index": "/div[2]/div[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数20_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/i[1]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/i[1]", - "//i[contains(., '◆')]", - "//I[@class='bd']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]/span/i[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": "◆" }], - "unique_index": "/div[2]/div[2]/span[1]/i[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数21_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/i[2]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/i[2]", - "//i[contains(., '◆')]", - "//I[@class='bg']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]/span/i" - ], - "exampleValues": [{ "num": 6, "value": "◆" }], - "unique_index": "/div[2]/div[2]/span[1]/i[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数22_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/div[1]", - "allXPaths": [ - "/div[2]/div[3]/div[1]", - "//div[contains(., '2016年4月24日')]", - "//DIV[@class='time s-fc4']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/div" - ], - "exampleValues": [{ "num": 6, "value": "2016年4月24日" }], - "unique_index": "/div[2]/div[3]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数23_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 6, "value": "删除" }], - "unique_index": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数24_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数25_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/span[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/span[1]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/span" - ], - "exampleValues": [{ "num": 6, "value": "|" }], - "unique_index": "/div[2]/div[3]/span[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数26_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/a[1]", - "//a[contains(., '(7809)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": " (7809)" }], - "unique_index": "/div[2]/div[3]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数27_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/a[1]", - "//a[contains(., '(7809)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数28_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[2]", - "allXPaths": [ - "/div[2]/div[3]/span[2]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span" - ], - "exampleValues": [{ "num": 6, "value": "|" }], - "unique_index": "/div[2]/div[3]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数29_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[2]", - "allXPaths": [ - "/div[2]/div[3]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a" - ], - "exampleValues": [{ "num": 6, "value": "回复" }], - "unique_index": "/div[2]/div[3]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数30_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[2]", - "allXPaths": [ - "/div[2]/div[3]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数31_图片地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/img[1]", - "allXPaths": [ - "/div[2]/div[2]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-19]/div/div[last()-1]/img" - ], - "exampleValues": [ - { - "num": 15, - "value": "http://s1.music.126.net/style/web2/emt/emoji_13.png" - } - ], - "unique_index": "/div[2]/div[2]/img[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数32_图片地址", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/img[2]", - "allXPaths": [ - "/div[2]/div[1]/div[1]/img[2]", - "//img[contains(., '')]", - "//IMG[@class='brand-tag brand-package']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-3]/div/div[last()-1]/div/img" - ], - "exampleValues": [ - { - "num": 31, - "value": "https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/21892874340/50e6/e81d/5292/2d693cbb98954e28d4d9fdb11be99a8b.png" - } - ], - "unique_index": "/div[2]/div[1]/div[1]/img[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ], - "loopType": 1 - } - }, - { - "id": 6, - "index": 14, - "parentId": 4, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 1, - "contentType": 0, - "relative": false, - "name": "参数33_链接文本", - "desc": "", - "extractType": 0, - "relativeXPath": "/html/body/div[1]/div[1]/div[1]/h1[1]/a[1]", - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/h1[1]/a[1]", - "//a[contains(., '网易云音乐')]", - "/html/body/div[last()-7]/div[last()-2]/div/h1/a" - ], - "exampleValues": [{ "num": 0, "value": "网易云音乐" }], - "unique_index": "3mjhotxlh4mljnhapl0", - "iframe": false, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - } - ] -} diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/149.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/149.json deleted file mode 100644 index 3083292..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/149.json +++ /dev/null @@ -1 +0,0 @@ -{"id":149,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/7/2023, 6:36:49 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"outputFormat":"mysql","saveName":"京东","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","exampleValue":"https://shouji.jd.com/"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"arguments[0].innerText = \"'\" + arguments[0].innerText + '\"'","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/205.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/205.json deleted file mode 100644 index a5aba4c..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/205.json +++ /dev/null @@ -1 +0,0 @@ -{"id":205,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"8/10/2023, 6:19:22 PM","update_time":"8/10/2023, 6:35:26 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"loopText_1","nodeId":4,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"1~2\n3~4","value":"1~2\n3~4"},{"id":2,"name":"inputText_2","nodeName":"输入文字","nodeId":12,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":3,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":4,"name":"自定义操作2","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,7,4,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":5,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,13,12],"isInLoop":false,"position":4,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":9,"index":3,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://shouji.jd.com/"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":3,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[6,5,14],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"1~2\n3~4","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":7,"index":5,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":1,"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text defcolor']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":6,"index":6,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":2}},{"id":2,"index":7,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"self.a = 15","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":8,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"print(self.a, \"sdf---------------\")\nself.a += 222\nprint(self.a, \"sdf---------------\")","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":-1,"index":9,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[10,11],"isInLoop":false,"position":5,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":6,"index":10,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":0},{"id":-1,"parentId":6,"index":11,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":12,"parentId":5,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","index":0}},{"id":10,"index":13,"parentId":5,"type":0,"option":5,"title":"自定义操作2","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"6","code":"str(self.a) + \"TEST\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":8,"index":14,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"0","index":0}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/209.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/209.json deleted file mode 100644 index 8d85f88..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/209.json +++ /dev/null @@ -1 +0,0 @@ -{"id":209,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"about:blank","create_time":"2023/11/22 21:51:29","update_time":"11/23/2023, 4:13:41 AM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"loopTimes_循环_0","nodeId":4,"nodeName":"循环","desc":"循环循环执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0},{"id":1,"name":"loopText_1","nodeId":9,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n","value":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"湖北大学\n "},{"id":1,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"(哲学)"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[9],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":-1,"index":1,"parentId":1,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":true,"position":0,"parameters":{"useLoop":true,"xpath":"","wait":3,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":""}},{"id":-1,"index":3,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":"","loopType":1}},{"id":3,"index":4,"parentId":1,"type":1,"option":8,"title":"循环","sequence":[6,5],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":5,"index":5,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"loopType":0}},{"id":4,"index":6,"parentId":3,"type":1,"option":8,"title":"循环","sequence":[8,7],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '湖北大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"]}},{"id":7,"index":7,"parentId":4,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"湖北大学\n "}],"unique_index":"dgby6tuc79nlp9toe7t","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":6,"index":8,"parentId":4,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数3_文本","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[3]","allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[3]","//div[contains(., '(哲学)')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-2]/div[last()-1]/div[last()-1]"],"exampleValues":[{"num":0,"value":"(哲学)"}],"unique_index":"xgoa18n26rllp9toqoa","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":1,"index":9,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[10,4],"isInLoop":false,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"4","pathList":"","textList":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":2,"index":10,"parentId":1,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"about:blank","links":"about:blank","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/210.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/210.json deleted file mode 100644 index 4fd145c..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/210.json +++ /dev/null @@ -1 +0,0 @@ -{"id":210,"name":"360安全浏览器2023最新版下载-全面保护上网安全就选360安全浏览器-华军软件园","url":"https://www.onlinedown.net/soft/66801.htm","links":"https://www.onlinedown.net/soft/66801.htm","create_time":"10/10/2023, 10:39:02 PM","update_time":"10/10/2023, 10:39:02 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.onlinedown.net/soft/66801.htm","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.onlinedown.net/soft/66801.htm","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.onlinedown.net/soft/66801.htm"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.onlinedown.net/soft/66801.htm","links":"https://www.onlinedown.net/soft/66801.htm","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":2,"title":"点击立即下载","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"lj-btn\")]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/section[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]/a[1]/b[1]","//b[contains(., '立即下载')]","//B[@class='lj-btn']","/html/body/section/div/div[last()-4]/div[last()-1]/div/div[last()-1]/div/a[last()-1]/b"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击通用网络下载","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"down-list\")]/div[2]/p[1]/a[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/section[1]/div[1]/div[2]/div[1]/div[4]/div[1]/div[1]/div[2]/p[1]/a[1]","//a[contains(., '通用网络下载')]","//A[@class='qrcode_show rest']","/html/body/section/div/div[last()-3]/div[last()-1]/div[last()-4]/div/div[last()-1]/div[last()-1]/p/a[last()-1]"]}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/215.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/215.json deleted file mode 100644 index e79cc2f..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/215.json +++ /dev/null @@ -1 +0,0 @@ -{"id":215,"name":"弹窗示例","url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","create_time":"12/5/2023, 1:53:45 AM","update_time":"12/6/2023, 9:33:12 PM","version":"0.6.0","saveThreshold":10,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://easyspider.cn/test_pages/alert_test.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/alert_test.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/alert_test.html"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"},{"id":1,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4,3,5],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body[1]/p[eval(\"self.a+1\")]","allXPaths":["//html[1]","//html[contains(., '弹窗示例')]","/html"],"exampleValues":[{"num":0,"value":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"}],"unique_index":"d8of3rzoypelpr7n0qm","iframe":false,"default":"12345","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"alert(eval(\"self.a+2+int('1')\"))","afterJSWaitTime":0,"downloadPic":0}]}},{"id":2,"index":4,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"self.a = 1\nself.b = \"45\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":5,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"console.log(\"Field[\"参数1_文本\"]Field[\"参数1_文本\"]\")","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/221.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/221.json deleted file mode 100644 index d0212ac..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/221.json +++ /dev/null @@ -1,889 +0,0 @@ -{ - "id": 221, - "name": "不固定元素列表测试:【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名", - "url": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "links": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "create_time": "12/5/2023, 4:12:11 AM", - "update_time": "12/10/2023, 5:56:54 AM", - "version": "0.6.0", - "saveThreshold": 10, - "quitWaitTime": 60, - "environment": 0, - "maximizeWindow": 0, - "maxViewLength": 15, - "recordLog": 1, - "outputFormat": "xlsx", - "saveName": "current_time", - "inputExcel": "", - "startFromExit": 0, - "pauseKey": "p", - "containJudge": false, - "desc": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "inputParameters": [ - { - "id": 0, - "name": "urlList_0", - "nodeId": 1, - "nodeName": "打开网页", - "value": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "desc": "要采集的网址列表,多行以\\n分开", - "type": "text", - "exampleValue": "https://www.shanghairanking.cn/rankings/bcsr/2023" - }, - { - "id": 1, - "name": "loopTimes_循环点击单个元素_1", - "nodeId": 6, - "nodeName": "循环点击单个元素", - "desc": "循环循环点击单个元素执行的次数(0代表无限循环)", - "type": "int", - "exampleValue": 0, - "value": 0 - } - ], - "outputParameters": [ - { - "id": 0, - "name": "参数1_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1" - }, - { - "id": 1, - "name": "参数2_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1" - }, - { - "id": 2, - "name": "参数3_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "前3%" - }, - { - "id": 3, - "name": "参数4_图片地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "https://www.shanghairanking.cn/_uni/logo/28312850.png" - }, - { - "id": 4, - "name": "参数5_链接文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "复旦大学\n " - }, - { - "id": 5, - "name": "参数6_链接地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/institution/fudan-university" - }, - { - "id": 6, - "name": "参数7_图片地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/_nuxt/img/uncollection.388fe56.svg" - }, - { - "id": 7, - "name": "参数8_链接文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "\n " - }, - { - "id": 8, - "name": "参数9_链接地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/institution/fudan-university" - }, - { - "id": 9, - "name": "参数10_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1044" - }, - { - "id": 10, - "name": "发送邮件123", - "desc": "自定义操作返回的数据", - "type": "text", - "recordASField": 0, - "exampleValue": "" - } - ], - "graph": [ - { - "index": 0, - "id": 0, - "parentId": 0, - "type": -1, - "option": 0, - "title": "root", - "sequence": [1, 8, 2], - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0 - }, - "isInLoop": false - }, - { - "id": 1, - "index": 1, - "parentId": 0, - "type": 0, - "option": 1, - "title": "打开网页", - "sequence": [], - "isInLoop": false, - "position": 0, - "parameters": { - "useLoop": false, - "xpath": "", - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "url": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "links": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "maxWaitTime": 10, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "cookies": "" - } - }, - { - "id": 3, - "index": 2, - "parentId": 0, - "type": 1, - "option": 8, - "title": "循环点击每个元素", - "sequence": [3, 6], - "isInLoop": false, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 1, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": "" - } - }, - { - "id": 4, - "index": 3, - "parentId": 3, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": true, - "xpath": "", - "iframe": false, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "alertHandleType": 0, - "allXPaths": "", - "loopType": 1, - "codeMode": -1 - } - }, - { - "id": 6, - "index": 4, - "parentId": 5, - "type": 1, - "option": 8, - "title": "循环采集数据", - "sequence": [5], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 1, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]", - "//tr[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]" - ] - } - }, - { - "id": 8, - "index": 5, - "parentId": 6, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "params": [ - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数1_文本", - "desc": "", - "relativeXPath": "/td[1]/div[1]", - "allXPaths": [ - "/td[1]/div[1]", - "//div[contains(., '')]", - "//DIV[@class='ranking']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[1]/div[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数2_文本", - "desc": "", - "relativeXPath": "/td[2]/span[1]", - "allXPaths": [ - "/td[2]/span[1]", - "//span[contains(., '1')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[2]/span[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数3_文本", - "desc": "", - "relativeXPath": "/td[3]", - "allXPaths": [ - "/td[3]", - "//td[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]" - ], - "exampleValues": [{ "num": 0, "value": "前3%" }], - "unique_index": "/td[3]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数4_图片地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[1]/img[1]", - "allXPaths": [ - "/td[4]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "//IMG[@class='univ-logo']", - "//IMG[@alt='复旦大学']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img" - ], - "exampleValues": [ - { - "num": 0, - "value": "https://www.shanghairanking.cn/_uni/logo/28312850.png" - } - ], - "unique_index": "/td[4]/div[1]/div[1]/img[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数5_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "//a[contains(., '复旦大学')]", - "//A[@class='name-cn']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "复旦大学\n " }], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数6_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "//a[contains(., '复旦大学')]", - "//A[@class='name-cn']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a" - ], - "exampleValues": [ - { "num": 0, "value": "/institution/fudan-university" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数7_图片地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img" - ], - "exampleValues": [ - { "num": 0, "value": "/_nuxt/img/uncollection.388fe56.svg" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数8_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='name-en']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "\n " }], - "unique_index": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数9_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='name-en']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a" - ], - "exampleValues": [ - { "num": 0, "value": "/institution/fudan-university" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数10_文本", - "desc": "", - "relativeXPath": "/td[5]", - "allXPaths": [ - "/td[5]", - "//td[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td" - ], - "exampleValues": [{ "num": 0, "value": "1044" }], - "unique_index": "/td[5]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - }, - { - "id": 5, - "index": 6, - "parentId": 3, - "type": 1, - "option": 8, - "title": "循环点击单个元素", - "sequence": [4, 7], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[contains(@class, \"ant-pagination-next\")]/a[1]", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "loopType": 0, - "pathList": "", - "textList": "", - "code": "", - "waitTime": 0, - "exitCount": 0, - "historyWait": 2, - "breakMode": 0, - "breakCode": "", - "breakCodeWaitTime": 0, - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]", - "//a[contains(., '')]", - "//A[@class='ant-pagination-item-link']", - "/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a" - ], - "codeMode": -1 - } - }, - { - "id": 7, - "index": 7, - "parentId": 5, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": true, - "xpath": "", - "iframe": false, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "alertHandleType": 0, - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]", - "//a[contains(., '')]", - "//A[@class='ant-pagination-item-link']", - "/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a" - ], - "loopType": 0 - } - }, - { - "id": 2, - "index": 8, - "parentId": 0, - "type": 0, - "option": 5, - "title": "发送邮件123", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "9", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "smtp.163.co23m", - "port": "465", - "username": "test@163.com", - "password": "asdf", - "from": "", - "to": "test@163.com", - "subject": "123", - "content": "434" - } - } - }, - { - "id": -1, - "index": 9, - "parentId": 0, - "type": 0, - "option": 5, - "title": "暂停程序", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "7", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - }, - { - "id": -1, - "index": 10, - "parentId": 0, - "type": 0, - "option": 5, - "title": "执行JavaScript", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "0", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - }, - { - "id": -1, - "index": 11, - "parentId": 0, - "type": 0, - "option": 5, - "title": "暂停程序dfgs", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "7", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - } - ] -} diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/237.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/237.json deleted file mode 100644 index 025e091..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/237.json +++ /dev/null @@ -1 +0,0 @@ -{"id":237,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/9/2023, 3:36:47 AM","update_time":"12/11/2023, 4:27:41 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":false,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环点击单个元素_2","nodeId":5,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环点击单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[8],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":9,"index":8,"parentId":7,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '山西太原市清徐县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/95.json b/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/95.json deleted file mode 100644 index 2d6f084..0000000 --- a/.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks/95.json +++ /dev/null @@ -1 +0,0 @@ -{"id":95,"name":"详情页+图片","url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","create_time":"5/31/2023, 11:28:40 PM","version":"0.3.2","containJudge":false,"desc":"https://www.dongchedi.com/article/7238974191096152615","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.dongchedi.com/article/7238974191096152615\n","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"https://www.dongchedi.com/article/7238974191096152615\n"}],"outputParameters":[{"id":0,"name":"参数1_图片页面标题","desc":"","type":"string","exampleValue":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"},{"id":1,"name":"参数1_文本","desc":"","type":"string","exampleValue":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"},{"id":2,"name":"参数1_图片地址","desc":"","type":"string","exampleValue":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":3,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":6,"relative":false,"name":"参数1_图片页面标题","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='zoom']","//IMG[@alt='6月上市/7月开始交付 腾势N7新增两项盲订权益']"],"exampleValues":[{"num":0,"value":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"}],"unique_index":"x9gqjnh9rrlibuxxs5","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"id(\"article\")","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]","//section[contains(., '在此前的上海车展上,')]","id(\"article\")","//SECTION[@class='jsx-3371063651 article-content']"],"exampleValues":[{"num":0,"value":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"}],"unique_index":"t4lzv1jbgl8libuy9uj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":3,"index":3,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"id(\"article\")//img","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]/div[1]/img[1]","//img[contains(., '')]"]}},{"id":4,"index":4,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":0,"relative":true,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"},{"num":1,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/f42b230d05a94aa8ba1b401e51111b46~noop.webp?x-expires=1688138568&x-signature=muye%2BsHfzS2YB19jW8RX3GNCIu4%3D"},{"num":2,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/4e1e272d4a2e4504b028abaa3bd0b602~noop.webp?x-expires=1688138568&x-signature=z32YraHeUVvQ7D73yJWYYTkdeEY%3D"},{"num":3,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/3eb96902ad214f169c30ecdbd0456e76~noop.webp?x-expires=1688138568&x-signature=S6%2BlLKW8fc%2FzSy39gk7p%2BrwVLfw%3D"},{"num":4,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/c16e96f7eed54b6983b6dc064776e9f2~noop.webp?x-expires=1688138568&x-signature=PR2cOC8A1Fd8sb14aBjjIc6FS1w%3D"},{"num":5,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/89bf50f0e23b4dfd8d0c9614f2502f8f~noop.webp?x-expires=1688138568&x-signature=vLP%2BB9Ta5LXHaoOLl%2FJHgK09vbM%3D"},{"num":6,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/59839b2298904b33b0af786a983f7ac8~noop.webp?x-expires=1688138568&x-signature=hg4C25lg0C3C44CQL5thKUcMrAk%3D"}],"unique_index":"8wt7k80ok99libv0xhq","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/compress.py b/.temp_to_pub/compress.py index 5dc33bc..bf3426e 100644 --- a/.temp_to_pub/compress.py +++ b/.temp_to_pub/compress.py @@ -32,9 +32,9 @@ def compress_folder_to_7z(folder_path, output_file): # 压缩文件夹 try: # "-mmt4"表示使用4个线程压缩 - subprocess.call(["7z", "a", output_file, folder_path]) + subprocess.call(["7z", "a", "-mx=9", output_file, folder_path]) except: - subprocess.call(["7za", "a", output_file, folder_path]) + subprocess.call(["7za", "a", "-mx=9", output_file, folder_path]) def compress_folder_to_7z_split(folder_path, output_file): if os.path.exists(output_file): @@ -129,15 +129,20 @@ if __name__ == "__main__": elif sys.platform == "darwin" and platform.architecture()[0] == "64bit": arch = get_processor_info() if arch == "Intel": - file_name = f"EasySpider_{easyspider_version}_MacOS_Intel_Chip.tar.gz" + file_name = f"EasySpider_{easyspider_version}_MacOS_Intel_Chip.7z" else: - file_name = f"EasySpider_{easyspider_version}_MacOS_Apple_Arm_Chip.tar.gz" - if os.path.exists("./EasySpider_MacOS_all_arch/Data"): - shutil.rmtree("./EasySpider_MacOS_all_arch/Data") - os.mkdir("./EasySpider_MacOS_all_arch/Data") - if os.path.exists("./EasySpider_MacOS_all_arch/TempUserDataFolder"): - shutil.rmtree("./EasySpider_MacOS_all_arch/TempUserDataFolder") - subprocess.call(["tar", "-zcvf", file_name, "./EasySpider_MacOS_all_arch"]) - # subprocess.call(["7zz", "a", "-v95m", file_name.replace(".tar.gz", ".7z"), file_name, "请继续解压EasySpider_MacOS_all_arch.tar.gz使用.txt"]) + file_name = f"EasySpider_{easyspider_version}_MacOS_Apple_Arm_Chip.7z" + if os.path.exists("./EasySpider_MacOS/Data"): + shutil.rmtree("./EasySpider_MacOS/Data") + os.mkdir("./EasySpider_MacOS/Data") + if os.path.exists("./EasySpider_MacOS/TempUserDataFolder"): + shutil.rmtree("./EasySpider_MacOS/TempUserDataFolder") + # if os.path.exists(file_name): + # os.remove(file_name) + # print(f"Remove {file_name} successfully!") + # subprocess.call(["tar", "-zcvf", file_name, "./EasySpider_MacOS"]) + # brew install p7zip + # subprocess.call(["7z", "a", "-mx=9", file_name, "./EasySpider_MacOS"]) + compress_folder_to_7z("./EasySpider_MacOS", file_name) print(f"Compress {file_name} successfully!") diff --git a/ElectronJS/EasySpider_en.crx b/ElectronJS/EasySpider_en.crx index 6158de9..4fb4764 100644 Binary files a/ElectronJS/EasySpider_en.crx and b/ElectronJS/EasySpider_en.crx differ diff --git a/ElectronJS/EasySpider_zh.crx b/ElectronJS/EasySpider_zh.crx index f6370f1..c501580 100644 Binary files a/ElectronJS/EasySpider_zh.crx and b/ElectronJS/EasySpider_zh.crx differ diff --git a/ElectronJS/main.js b/ElectronJS/main.js index 83cef2c..ef20f71 100644 --- a/ElectronJS/main.js +++ b/ElectronJS/main.js @@ -1432,8 +1432,8 @@ app.whenReady().then(() => { // 检查主版本号是否匹配 if (chromeVersion.split(".")[0] !== chromedriverVersion.split(".")[0]) { dialog.showErrorBox( - "ChromeDriver版本不匹配|ChromeDriver Version Mismatch", - ` Chrome的版本(${chromeVersion})与ChromeDriver的版本(${chromedriverVersion})不匹配,软件将无法正常使用。请阅读文件夹下的“浏览器闪退解决方案.txt”升级ChromeDriver到${chromeVersion}.*版本以正常使用软件。\n\nThe version of Chrome (${chromeVersion}) does not match the version of ChromeDriver (${chromedriverVersion}), this will cause the software to be unable to run normally. Please read the "If Chrome exits when desigining a task.txt" in the folder to upgrade ChromeDriver to ${chromeVersion}.* version to use the software normally.` + "ChromeDriver版本不匹配\nChromeDriver Version Mismatch", + `由于MacOS的自动升级策略,导致了当前的Chrome的版本被自动更新到了${chromeVersion},与软件自带的ChromeDriver的版本(${chromedriverVersion})不匹配,软件将无法正常使用。请阅读文件夹下的“浏览器闪退解决方案.txt”升级ChromeDriver到${chromeVersion}.*版本以正常使用软件。\n\nThe current version of Chrome has been automatically updated to ${chromeVersion} due to the automatic update policy of MacOS, which does not match the version of ChromeDriver (${chromedriverVersion}) provided by the software. The software will not work properly. Please read the "Browser Crash Solution.txt" in the folder to upgrade ChromeDriver to ${chromeVersion}.* version to use the software normally.` ); } else { // 版本匹配,继续应用流程 diff --git a/ElectronJS/package_macos.sh b/ElectronJS/package_macos.sh index 088051b..577d0dc 100755 --- a/ElectronJS/package_macos.sh +++ b/ElectronJS/package_macos.sh @@ -5,27 +5,27 @@ cd ../Extension/manifest_v3/ node package.js cd ../../ElectronJS rm -rf out -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app npm run make -unzip out/make/zip/darwin/*64/EasySpider-darwin* -d ../.temp_to_pub/EasySpider_MacOS_all_arch/ -# mv out/EasySpider-darwin-*64/EasySpider.app ../.temp_to_pub/EasySpider_MacOS_all_arch/ -rm ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/VS_BuildTools.exe -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/chrome_win64 -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/chromedrivers -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/Data -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/.idea -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/tasks -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/execution_instances -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/user_data -rm -r ../.temp_to_pub/EasySpider_MacOS_all_arch/EasySpider.app/Contents/Resources/app/TempUserDataFolder -rm -rf ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -mkdir ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/easyspider_executestage.py ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/myChrome.py ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/utils.py ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/requirements.txt ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/Readme.md ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp ../ExecuteStage/myCode.py ../.temp_to_pub/EasySpider_MacOS_all_arch -cp -Rf ../ExecuteStage/undetected_chromedriver_ES ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp -Rf ../ExecuteStage/.vscode ../.temp_to_pub/EasySpider_MacOS_all_arch/Code -cp -Rf ../tasks/* "../.temp_to_pub/EasySpider_MacOS_all_arch/Sample Tasks" +unzip out/make/zip/darwin/*64/EasySpider-darwin* -d ../.temp_to_pub/EasySpider_MacOS/ +# mv out/EasySpider-darwin-*64/EasySpider.app ../.temp_to_pub/EasySpider_MacOS/ +rm ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/VS_BuildTools.exe +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/chrome_win64 +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/chromedrivers +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/Data +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/.idea +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/tasks +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/execution_instances +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/user_data +rm -r ../.temp_to_pub/EasySpider_MacOS/EasySpider.app/Contents/Resources/app/TempUserDataFolder +rm -rf ../.temp_to_pub/EasySpider_MacOS/Code +mkdir ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/easyspider_executestage.py ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/myChrome.py ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/utils.py ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/requirements.txt ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/Readme.md ../.temp_to_pub/EasySpider_MacOS/Code +cp ../ExecuteStage/myCode.py ../.temp_to_pub/EasySpider_MacOS +cp -Rf ../ExecuteStage/undetected_chromedriver_ES ../.temp_to_pub/EasySpider_MacOS/Code +cp -Rf ../ExecuteStage/.vscode ../.temp_to_pub/EasySpider_MacOS/Code +cp -Rf ./tasks/* "../.temp_to_pub/EasySpider_MacOS/Sample Tasks" diff --git a/ElectronJS/server.js b/ElectronJS/server.js index 645443c..d8fac04 100644 --- a/ElectronJS/server.js +++ b/ElectronJS/server.js @@ -1,391 +1,469 @@ -const http = require('http'); -const querystring = require('querystring'); -const url = require('url'); -const fs = require('fs'); -const path=require('path'); -const {app, dialog} = require('electron'); -const XLSX = require('xlsx'); -const formidable = require('formidable'); -const express = require('express'); -const multer = require('multer'); -const cors = require('cors'); +const http = require("http"); +const querystring = require("querystring"); +const url = require("url"); +const fs = require("fs"); +const path = require("path"); +const { app, dialog } = require("electron"); +const XLSX = require("xlsx"); +const formidable = require("formidable"); +const express = require("express"); +const multer = require("multer"); +const cors = require("cors"); -function travel(dir,callback){ - fs.readdirSync(dir).forEach((file)=>{ - const pathname=path.join(dir,file) - if(fs.statSync(pathname).isDirectory()){ - travel(pathname,callback) - }else{ - callback(pathname) - } +function travel(dir, callback) { + fs.readdirSync(dir).forEach((file) => { + const pathname = path.join(dir, file); + if (fs.statSync(pathname).isDirectory()) { + travel(pathname, callback); + } else { + callback(pathname); + } + }); +} +function compare(p) { + //这是比较函数 + return function (m, n) { + let a = m[p]; + let b = n[p]; + return b - a; //降序 + }; +} + +function getDir() { + if (__dirname.indexOf("app") >= 0 && __dirname.indexOf("sources") >= 0) { + if (process.platform == "darwin") { + return app.getPath("userData"); + } else { + return path.join(__dirname, "../../.."); + } + } else { + return __dirname; + } +} +function getEasySpiderLocation() { + if (__dirname.indexOf("app") >= 0 && __dirname.indexOf("sources") >= 0) { + if (process.platform == "darwin") { + return path.join(__dirname, "../../../"); + } else { + return path.join(__dirname, "../../../"); + } + } else { + return __dirname; + } +} +if (!fs.existsSync(path.join(getDir(), "tasks"))) { + fs.mkdirSync(path.join(getDir(), "tasks")); +} +if (!fs.existsSync(path.join(getDir(), "execution_instances"))) { + fs.mkdirSync(path.join(getDir(), "execution_instances")); +} +if (!fs.existsSync(path.join(getDir(), "config.json"))) { + // Generate config.json + fs.writeFileSync( + path.join(getDir(), "config.json"), + JSON.stringify({ + webserver_address: "http://localhost", + webserver_port: 8074, + user_data_folder: "./user_data", + debug: false, + copyright: 0, + sys_arch: require("os").arch(), + mysql_config_path: "./mysql_config.json", + absolute_user_data_folder: + "D:\\Document\\Projects\\EasySpider\\ElectronJS\\user_data", }) -} -function compare(p){ //这是比较函数 - return function(m,n){ - let a = m[p]; - let b = n[p]; - return b - a; //降序 - } -} - -function getDir(){ - if(__dirname.indexOf("app") >= 0 && __dirname.indexOf("sources") >= 0){ - if(process.platform == "darwin"){ - return app.getPath("userData"); - } else { - return path.join(__dirname,"../../.."); - } - } else { - return __dirname; - } -} -function getEasySpiderLocation(){ - if(__dirname.indexOf("app") >= 0 && __dirname.indexOf("sources") >= 0){ - if(process.platform == "darwin"){ - return path.join(__dirname,"../../../"); - } else { - return path.join(__dirname,"../../../"); - } - } else { - return __dirname; - } -} -if(!fs.existsSync(path.join(getDir(), "tasks"))){ - fs.mkdirSync(path.join(getDir(), "tasks")); -} -if(!fs.existsSync(path.join(getDir(), "execution_instances"))){ - fs.mkdirSync(path.join(getDir(), "execution_instances")); -} -if(!fs.existsSync(path.join(getDir(), "config.json"))){ - // Generate config.json - fs.writeFileSync(path.join(getDir(), "config.json"), - JSON.stringify({ - "webserver_address": "http://localhost", - "webserver_port": 8074, - "user_data_folder": "./user_data", - "debug": false, - "copyright": 0, - "sys_arch": require('os').arch(), - "mysql_config_path": "./mysql_config.json", - "absolute_user_data_folder": "D:\\Document\\Projects\\EasySpider\\ElectronJS\\user_data" - } - )); + ); } exports.getDir = getDir; exports.getEasySpiderLocation = getEasySpiderLocation; -FileMimes = JSON.parse(fs.readFileSync(path.join(__dirname,'mime.json')).toString()); +FileMimes = JSON.parse( + fs.readFileSync(path.join(__dirname, "mime.json")).toString() +); const fileServer = express(); -const upload = multer({ dest: path.join(getDir(), 'Data/') }); +const upload = multer({ dest: path.join(getDir(), "Data/") }); fileServer.use(cors()); -fileServer.post('/excelUpload', upload.single('file'), (req, res) => { - let workbook = XLSX.readFile(req.file.path); - let sheet_name_list = workbook.SheetNames; - let data = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); - let result = data.reduce((acc, obj) => { - Object.keys(obj).forEach(key => { - if(!acc[key]) { - acc[key] = []; - } - acc[key].push(obj[key]); - }); - return acc; - }, {}); - // console.log(data); - // delete file after reading - fs.unlink(req.file.path, (err) => { - if (err) { - console.error(err); - return; - } - // file removed +fileServer.post("/excelUpload", upload.single("file"), (req, res) => { + let workbook = XLSX.readFile(req.file.path); + let sheet_name_list = workbook.SheetNames; + let data = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); + let result = data.reduce((acc, obj) => { + Object.keys(obj).forEach((key) => { + if (!acc[key]) { + acc[key] = []; + } + acc[key].push(obj[key]); }); - res.send(JSON.stringify(result)); + return acc; + }, {}); + // console.log(data); + // delete file after reading + fs.unlink(req.file.path, (err) => { + if (err) { + console.error(err); + return; + } + // file removed + }); + res.send(JSON.stringify(result)); }); fileServer.listen(8075, () => { - console.log('Server listening on http://localhost:8075'); + console.log("Server listening on http://localhost:8075"); }); - -exports.start = function(port = 8074) { - http.createServer(function(req, res) { - let body = ""; - res.setHeader("Access-Control-Allow-Origin", "*"); // 设置可访问的源 - // 解析参数 - const pathName = url.parse(req.url).pathname; - if(pathName == "/excelUpload" && req.method.toLowerCase() === 'post'){ - // // parse a file upload - // let form = new formidable.IncomingForm(); - // // Set the max file size - // form.maxFileSize = 200 * 1024 * 1024; // 200MB - // form.parse(req, function (err, fields, files) { - // console.log("excelUpload") - // console.log(err, fields, files); - // let oldpath = files.file.path; - // let workbook = XLSX.readFile(oldpath); - // let sheet_name_list = workbook.SheetNames; - // let data = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); - // console.log(data); - // res.end('File uploaded and read successfully.'); - // }); - } else if(pathName.indexOf(".") < 0) { //如果没有后缀名, 则为后台请求 - res.writeHead(200, { 'Content-Type': 'application/json' }); - } - // else if(pathName.indexOf("index.html") >= 0) { - // fs.readFile(path.join(__dirname,"src", pathName), async (err, data) => { - // if (err) { - // res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' }) - // res.end(err.message) - // return; - // } - // if (!err) { - // // 3. 针对不同的文件返回不同的内容头 - // let extname = path.extname(pathName); - // let mime = FileMimes[extname] - // res.writeHead(200, { 'Content-Type': mime + ';charset="utf-8"' }) - // res.end(data); - // return; - // } - // }) - // } - else { //如果有后缀名, 则为前端请求 - // console.log(path.join(__dirname,"src/taskGrid", pathName)); - fs.readFile(path.join(__dirname,"src", pathName), async (err, data) => { - if (err) { - res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' }) - res.end(err.message) - return; - } - if (!err) { - // 3. 针对不同的文件返回不同的内容头 - let extname = path.extname(pathName); - let mime = FileMimes[extname] - res.writeHead(200, { 'Content-Type': mime + ';charset="utf-8"' }) - res.end(data); - return; - } - }) - } - - - req.on('data', function(chunk) { - body += chunk; - }); - req.on('end', function() { - // 设置响应头部信息及编码 - if (pathName == "/queryTasks") { //查询所有服务信息,只包括id和服务名称 - output = []; - travel(path.join(getDir(), "tasks"),function(pathname){ - const data = fs.readFileSync(pathname, 'utf8'); - let stat = fs.statSync(pathname, 'utf8'); - // parse JSON string to JSON object - const task = JSON.parse(data); - let item = { - "id": task.id, - "name": task.name, - "url": task.url, - "mtime": stat.mtime, - } - if(item.id!= -2) { - output.push(item); - } - }); - output.sort(compare("mtime")); - res.write(JSON.stringify(output)); - res.end(); - } else if(pathName == "/queryOSVersion") { - res.write(JSON.stringify({"version":process.platform, "bit":process.arch})); - res.end(); - } else if (pathName == "/queryExecutionInstances") { //查询所有服务信息,只包括id和服务名称 - output = []; - travel(path.join(getDir(), "execution_instances"),function(pathname){ - const data = fs.readFileSync(pathname, 'utf8'); - // parse JSON string to JSON object - const task = JSON.parse(data); - let item = { - "id": task.id, - "name": task.name, - "url": task.url, - } - if(item.id!= -2) { - output.push(item); - } - }); - res.write(JSON.stringify(output)); - res.end(); - } else if (pathName == "/queryTask") { - let params = url.parse(req.url, true).query; - try { - let tid = parseInt(params.id); - const data = fs.readFileSync(path.join(getDir(), `tasks/${tid}.json`), 'utf8'); - // parse JSON string to JSON object - res.write(data); - res.end(); - } catch (error) { - res.write(JSON.stringify({ "error": "Cannot find task based on specified task ID." })); - res.end(); - } - } else if (pathName == "/queryExecutionInstance") { - let params = url.parse(req.url, true).query; - try { - let tid = parseInt(params.id); - const data = fs.readFileSync(path.join(getDir(), `execution_instances/${tid}.json`), 'utf8'); - // parse JSON string to JSON object - res.write(data); - res.end(); - } catch (error) { - res.write(JSON.stringify({ "error": "Cannot find execution instance based on specified execution ID." })); - res.end(); - } - } else if(pathName == "/"){ - res.write("Hello World!", 'utf8'); - res.end(); - } else if(pathName == "/deleteTask"){ - let params = url.parse(req.url, true).query; - try { - let tid = parseInt(params.id); - let data = fs.readFileSync(path.join(getDir(), `tasks/${tid}.json`), 'utf8'); - data = JSON.parse(data); - data.id = -2; - data = JSON.stringify(data); - // write JSON string to a file - fs.writeFile(path.join(getDir(), `tasks/${tid}.json`), data, (err) => { - if (err) { - throw err; - } - }); - res.write(JSON.stringify({ "success": "Task has been deleted successfully." })); - res.end(); - } catch (error) { - res.write(JSON.stringify({ "error": "Cannot find task based on specified task ID." })); - res.end(); - } - } else if(pathName == "/manageTask"){ - body = querystring.parse(body); - data = JSON.parse(body.params); - let id = data["id"]; - if (data["id"] == -1) { - file_names = []; - fs.readdirSync(path.join(getDir(), "tasks")).forEach((file)=>{ - try{ - if(file.split(".")[1] == "json"){ - file_names.push(parseInt(file.split(".")[0])); - } - } catch (error) { - - } - }) - if(file_names.length == 0){ - id = 0; - } else { - id = Math.max(...file_names) + 1; - } - data["id"] = id; - // write JSON string to a fil - } - if(data["outputFormat"] == "mysql"){ - let mysql_config_path = path.join(getDir(), 'mysql_config.json'); - // 检测文件是否存在 - fs.access(mysql_config_path, fs.F_OK, (err) => { - if (err) { - console.log("File does not exist. Creating..."); - // 文件不存在,创建文件 - const config = { - host: "localhost", - port: 3306, - username: "your_username", - password: "your_password", - database: "your_database" - }; - fs.writeFile(mysql_config_path, JSON.stringify(config, null, 4), (err) => { - if (err) throw err; - console.log('File is created successfully.'); - }); - } else { - console.log("File exists."); - } - }); - } - data = JSON.stringify(data); - // write JSON string to a file - fs.writeFile(path.join(getDir(), `tasks/${id}.json`), data, (err) => {}); - - res.write(id.toString(), 'utf8'); - res.end(); - } else if(pathName == "/invokeTask"){ - body = querystring.parse(body); - let data = JSON.parse(body.params); - let id = body.id; - let task = fs.readFileSync(path.join(getDir(), `tasks/${id}.json`), 'utf8'); - task = JSON.parse(task); - try{ - task["links"] = data["urlList_0"]; - if (task["links"] == undefined) { - task["links"] = "about:blank"; - } - } catch(error) { - task["links"] = "about:blank"; - } - for (const [key, value] of Object.entries(data)) { - for (let i = 0; i < task["inputParameters"].length; i++) { - if (key === task["inputParameters"][i]["name"]) { // 能调用 - const nodeId = parseInt(task["inputParameters"][i]["nodeId"]); - const node = task["graph"][nodeId]; - if (node["option"] === 1) { - node["parameters"]["links"] = value; - } else if (node["option"] === 4) { - node["parameters"]["value"] = value; - } else if (node["option"] === 8 && node["parameters"]["loopType"] === 0) { - node["parameters"]["exitCount"] = parseInt(value); - } else if (node["option"] === 8) { - node["parameters"]["textList"] = value; - } - break; - } - } - } - let file_names = []; - fs.readdirSync(path.join(getDir(), "execution_instances")).forEach((file)=>{ - try{ - if(file.split(".")[1] == "json"){ - file_names.push(parseInt(file.split(".")[0])); - } - console.log(file); - } catch (error) { - - } - }) - let eid = 0; - if (file_names.length != 0) { - eid = Math.max(...file_names) + 1; - } - if(body["EID"]!="" && body["EID"] != undefined){ //覆盖原有的执行实例 - eid = parseInt(body["EID"]); - } - task["id"] = eid; - task = JSON.stringify(task); - fs.writeFile(path.join(getDir(), `execution_instances/${eid}.json`), task, (err) => {}); - res.write(eid.toString(), 'utf8'); - res.end(); - } else if(pathName == "/getConfig"){ - let config_file = fs.readFileSync(path.join(getDir(), `config.json`), 'utf8'); - config_file = JSON.parse(config_file); - res.write(JSON.stringify(config_file)); - res.end(); - } else if(pathName == "/setUserDataFolder"){ - let config = fs.readFileSync(path.join(getDir(), `config.json`), 'utf8'); - config = JSON.parse(config); - body = querystring.parse(body); - config["user_data_folder"] = body["user_data_folder"]; - config = JSON.stringify(config); - fs.writeFile(path.join(getDir(), `config.json`), config, (err) => {}); - res.write(JSON.stringify({ "success": "User data folder has been set successfully." })); - res.end(); +exports.start = function (port = 8074) { + http + .createServer(function (req, res) { + let body = ""; + res.setHeader("Access-Control-Allow-Origin", "*"); // 设置可访问的源 + // 解析参数 + const pathName = url.parse(req.url).pathname; + if (pathName == "/excelUpload" && req.method.toLowerCase() === "post") { + // // parse a file upload + // let form = new formidable.IncomingForm(); + // // Set the max file size + // form.maxFileSize = 200 * 1024 * 1024; // 200MB + // form.parse(req, function (err, fields, files) { + // console.log("excelUpload") + // console.log(err, fields, files); + // let oldpath = files.file.path; + // let workbook = XLSX.readFile(oldpath); + // let sheet_name_list = workbook.SheetNames; + // let data = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); + // console.log(data); + // res.end('File uploaded and read successfully.'); + // }); + } else if (pathName.indexOf(".") < 0) { + //如果没有后缀名, 则为后台请求 + res.writeHead(200, { "Content-Type": "application/json" }); + } + // else if(pathName.indexOf("index.html") >= 0) { + // fs.readFile(path.join(__dirname,"src", pathName), async (err, data) => { + // if (err) { + // res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' }) + // res.end(err.message) + // return; + // } + // if (!err) { + // // 3. 针对不同的文件返回不同的内容头 + // let extname = path.extname(pathName); + // let mime = FileMimes[extname] + // res.writeHead(200, { 'Content-Type': mime + ';charset="utf-8"' }) + // res.end(data); + // return; + // } + // }) + // } + else { + //如果有后缀名, 则为前端请求 + // console.log(path.join(__dirname,"src/taskGrid", pathName)); + fs.readFile( + path.join(__dirname, "src", pathName), + async (err, data) => { + if (err) { + res.writeHead(404, { + "Content-Type": 'text/html;charset="utf-8"', + }); + res.end(err.message); + return; } - }); - }).listen(port); - console.log("Server has started."); -} + if (!err) { + // 3. 针对不同的文件返回不同的内容头 + let extname = path.extname(pathName); + let mime = FileMimes[extname]; + res.writeHead(200, { "Content-Type": mime + ';charset="utf-8"' }); + res.end(data); + return; + } + } + ); + } + + req.on("data", function (chunk) { + body += chunk; + }); + req.on("end", function () { + // 设置响应头部信息及编码 + if (pathName == "/queryTasks") { + //查询所有服务信息,只包括id和服务名称 + output = []; + travel(path.join(getDir(), "tasks"), function (pathname) { + const data = fs.readFileSync(pathname, "utf8"); + let stat = fs.statSync(pathname, "utf8"); + // parse JSON string to JSON object + // console.log("\n\n\n\n\n", pathname, '\n\n\n\n\n\n'); + if (pathname.indexOf(".json") >= 0) { + const task = JSON.parse(data); + let item = { + id: task.id, + name: task.name, + url: task.url, + mtime: stat.mtime, + }; + if (item.id != -2) { + output.push(item); + } + } + }); + output.sort(compare("mtime")); + res.write(JSON.stringify(output)); + res.end(); + } else if (pathName == "/queryOSVersion") { + res.write( + JSON.stringify({ version: process.platform, bit: process.arch }) + ); + res.end(); + } else if (pathName == "/queryExecutionInstances") { + //查询所有服务信息,只包括id和服务名称 + output = []; + travel( + path.join(getDir(), "execution_instances"), + function (pathname) { + const data = fs.readFileSync(pathname, "utf8"); + // parse JSON string to JSON object + const task = JSON.parse(data); + let item = { + id: task.id, + name: task.name, + url: task.url, + }; + if (item.id != -2) { + output.push(item); + } + } + ); + res.write(JSON.stringify(output)); + res.end(); + } else if (pathName == "/queryTask") { + let params = url.parse(req.url, true).query; + try { + let tid = parseInt(params.id); + const data = fs.readFileSync( + path.join(getDir(), `tasks/${tid}.json`), + "utf8" + ); + // parse JSON string to JSON object + res.write(data); + res.end(); + } catch (error) { + res.write( + JSON.stringify({ + error: "Cannot find task based on specified task ID.", + }) + ); + res.end(); + } + } else if (pathName == "/queryExecutionInstance") { + let params = url.parse(req.url, true).query; + try { + let tid = parseInt(params.id); + const data = fs.readFileSync( + path.join(getDir(), `execution_instances/${tid}.json`), + "utf8" + ); + // parse JSON string to JSON object + res.write(data); + res.end(); + } catch (error) { + res.write( + JSON.stringify({ + error: + "Cannot find execution instance based on specified execution ID.", + }) + ); + res.end(); + } + } else if (pathName == "/") { + res.write("Hello World!", "utf8"); + res.end(); + } else if (pathName == "/deleteTask") { + let params = url.parse(req.url, true).query; + try { + let tid = parseInt(params.id); + let data = fs.readFileSync( + path.join(getDir(), `tasks/${tid}.json`), + "utf8" + ); + data = JSON.parse(data); + data.id = -2; + data = JSON.stringify(data); + // write JSON string to a file + fs.writeFile( + path.join(getDir(), `tasks/${tid}.json`), + data, + (err) => { + if (err) { + throw err; + } + } + ); + res.write( + JSON.stringify({ success: "Task has been deleted successfully." }) + ); + res.end(); + } catch (error) { + res.write( + JSON.stringify({ + error: "Cannot find task based on specified task ID.", + }) + ); + res.end(); + } + } else if (pathName == "/manageTask") { + body = querystring.parse(body); + data = JSON.parse(body.params); + let id = data["id"]; + if (data["id"] == -1) { + file_names = []; + fs.readdirSync(path.join(getDir(), "tasks")).forEach((file) => { + try { + if (file.split(".")[1] == "json") { + file_names.push(parseInt(file.split(".")[0])); + } + } catch (error) {} + }); + if (file_names.length == 0) { + id = 0; + } else { + id = Math.max(...file_names) + 1; + } + data["id"] = id; + // write JSON string to a fil + } + if (data["outputFormat"] == "mysql") { + let mysql_config_path = path.join(getDir(), "mysql_config.json"); + // 检测文件是否存在 + fs.access(mysql_config_path, fs.F_OK, (err) => { + if (err) { + console.log("File does not exist. Creating..."); + // 文件不存在,创建文件 + const config = { + host: "localhost", + port: 3306, + username: "your_username", + password: "your_password", + database: "your_database", + }; + fs.writeFile( + mysql_config_path, + JSON.stringify(config, null, 4), + (err) => { + if (err) throw err; + console.log("File is created successfully."); + } + ); + } else { + console.log("File exists."); + } + }); + } + data = JSON.stringify(data); + // write JSON string to a file + fs.writeFile( + path.join(getDir(), `tasks/${id}.json`), + data, + (err) => {} + ); + + res.write(id.toString(), "utf8"); + res.end(); + } else if (pathName == "/invokeTask") { + body = querystring.parse(body); + let data = JSON.parse(body.params); + let id = body.id; + let task = fs.readFileSync( + path.join(getDir(), `tasks/${id}.json`), + "utf8" + ); + task = JSON.parse(task); + try { + task["links"] = data["urlList_0"]; + if (task["links"] == undefined) { + task["links"] = "about:blank"; + } + } catch (error) { + task["links"] = "about:blank"; + } + for (const [key, value] of Object.entries(data)) { + for (let i = 0; i < task["inputParameters"].length; i++) { + if (key === task["inputParameters"][i]["name"]) { + // 能调用 + const nodeId = parseInt(task["inputParameters"][i]["nodeId"]); + const node = task["graph"][nodeId]; + if (node["option"] === 1) { + node["parameters"]["links"] = value; + } else if (node["option"] === 4) { + node["parameters"]["value"] = value; + } else if ( + node["option"] === 8 && + node["parameters"]["loopType"] === 0 + ) { + node["parameters"]["exitCount"] = parseInt(value); + } else if (node["option"] === 8) { + node["parameters"]["textList"] = value; + } + break; + } + } + } + let file_names = []; + fs.readdirSync(path.join(getDir(), "execution_instances")).forEach( + (file) => { + try { + if (file.split(".")[1] == "json") { + file_names.push(parseInt(file.split(".")[0])); + } + console.log(file); + } catch (error) {} + } + ); + let eid = 0; + if (file_names.length != 0) { + eid = Math.max(...file_names) + 1; + } + if (body["EID"] != "" && body["EID"] != undefined) { + //覆盖原有的执行实例 + eid = parseInt(body["EID"]); + } + task["id"] = eid; + task = JSON.stringify(task); + fs.writeFile( + path.join(getDir(), `execution_instances/${eid}.json`), + task, + (err) => {} + ); + res.write(eid.toString(), "utf8"); + res.end(); + } else if (pathName == "/getConfig") { + let config_file = fs.readFileSync( + path.join(getDir(), `config.json`), + "utf8" + ); + config_file = JSON.parse(config_file); + res.write(JSON.stringify(config_file)); + res.end(); + } else if (pathName == "/setUserDataFolder") { + let config = fs.readFileSync( + path.join(getDir(), `config.json`), + "utf8" + ); + config = JSON.parse(config); + body = querystring.parse(body); + config["user_data_folder"] = body["user_data_folder"]; + config = JSON.stringify(config); + fs.writeFile(path.join(getDir(), `config.json`), config, (err) => {}); + res.write( + JSON.stringify({ + success: "User data folder has been set successfully.", + }) + ); + res.end(); + } + }); + }) + .listen(port); + console.log("Server has started."); +}; diff --git a/ElectronJS/src/taskGrid/executeTask.html b/ElectronJS/src/taskGrid/executeTask.html index 0d13152..5b1dfd3 100644 --- a/ElectronJS/src/taskGrid/executeTask.html +++ b/ElectronJS/src/taskGrid/executeTask.html @@ -548,9 +548,9 @@ app.$data.command = "./EasySpider/resources/app/chrome_linux64/easyspider_executestage --ids '[" + app.$data.ID.toString() + "]' --user_data " + (app.$data.with_user_data ? "1" : "0") + " --server_address " + app.$data.backEndAddressServiceWrapper; } else if(OSInfo.version == 'darwin'){ if(getUrlParam("lang") == "zh"){ - app.$data.easyspider_location = "你的EasySpider文件夹,如:cd /Users/"+ app.$data.config_folder.split("/")[2] + "/Downloads/EasySpider_MacOS_all_arch"; + app.$data.easyspider_location = "你的EasySpider文件夹,如:cd /Users/"+ app.$data.config_folder.split("/")[2] + "/Downloads/EasySpider_MacOS"; } else { - app.$data.easyspider_location = "Your EasySpider folder, such as: cd /Users/"+ app.$data.config_folder.split("/")[2] + "/Downloads/EasySpider_MacOS_all_arch"; + app.$data.easyspider_location = "Your EasySpider folder, such as: cd /Users/"+ app.$data.config_folder.split("/")[2] + "/Downloads/EasySpider_MacOS"; } app.$data.command = "./easyspider_executestage --ids '[" + app.$data.ID.toString() + "]' --user_data " + (app.$data.with_user_data ? "1" : "0") + " --server_address " + app.$data.backEndAddressServiceWrapper; } diff --git a/ElectronJS/src/taskGrid/global.js b/ElectronJS/src/taskGrid/global.js index cf75bc2..187cae2 100644 --- a/ElectronJS/src/taskGrid/global.js +++ b/ElectronJS/src/taskGrid/global.js @@ -21,6 +21,19 @@ function DateFormat(datetime) { return formatted; } +function formatDateTime(date) { + const addZero = (num) => (num < 10 ? `0${num}` : num); + + let year = date.getFullYear(); + let month = addZero(date.getMonth() + 1); // getMonth() 返回值范围是0-11,所以加1 + let day = addZero(date.getDate()); + let hours = addZero(date.getHours()); + let minutes = addZero(date.getMinutes()); + let seconds = addZero(date.getSeconds()); + + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; +} + function getUrlParam(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 let r = window.location.search.substr(1).match(reg); //匹配目标参数 diff --git a/ElectronJS/src/taskGrid/logic.js b/ElectronJS/src/taskGrid/logic.js index 03e100a..7063120 100644 --- a/ElectronJS/src/taskGrid/logic.js +++ b/ElectronJS/src/taskGrid/logic.js @@ -31,7 +31,7 @@ ws.onmessage = function (evt) { if (evt["type"] == "title") { //如果不是特殊处理的话,默认全部是增加元素操作 if (old_title == "新任务 | New Task") { //只记录第一次的title $("#serviceName").val(evt.data.title); - $("#create_time").val(new Date().toLocaleString()); + $("#create_time").val(formatDateTime(new Date())); } old_title = evt.data.title; } else if (evt["type"] == "notify") { @@ -471,7 +471,7 @@ function saveService(type) { let text = LANG("确认要保存任务吗(不能用鼠标点击时,请按键盘回车键)?", "Are you sure to save the task (if you can't use the mouse to click, please press the enter key)?"); if (type == 1) { //任务另存为 serviceId = -1; - $("#create_time").val(new Date().toLocaleString()); + $("#create_time").val(formatDateTime(new Date())); text = LANG("确认要另存为任务吗(不能用鼠标点击时,请按键盘回车键)?", "Are you sure to save the task as (if you can't use the mouse to click, please press the enter key)?"); } // if (confirm(text)) { @@ -596,7 +596,7 @@ function saveService(type) { "url": url, "links": links, "create_time": $("#create_time").val(), - "update_time": new Date().toLocaleString(), + "update_time": formatDateTime(new Date()), "version": "0.6.0", "saveThreshold": saveThreshold, // "cloudflare": cloudflare, diff --git a/ElectronJS/tasks/304.json b/ElectronJS/tasks/304.json new file mode 100644 index 0000000..d415a84 --- /dev/null +++ b/ElectronJS/tasks/304.json @@ -0,0 +1 @@ +{"id":304,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"22/12/2023, 07:07:34","update_time":"2023-12-22 07:13:38","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/ElectronJS/tasks/305.json b/ElectronJS/tasks/305.json new file mode 100644 index 0000000..84f5e3d --- /dev/null +++ b/ElectronJS/tasks/305.json @@ -0,0 +1 @@ +{"id":305,"name":"JD","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"2023-12-22 07:13:58","update_time":"2023-12-22 07:14:27","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file diff --git a/ExecuteStage/.vscode/launch.json b/ExecuteStage/.vscode/launch.json index ddf20a3..d060307 100644 --- a/ExecuteStage/.vscode/launch.json +++ b/ExecuteStage/.vscode/launch.json @@ -12,7 +12,7 @@ "justMyCode": false, // "args": ["--ids", "[7]", "--read_type", "remote", "--headless", "0"] // "args": ["--ids", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"] - "args": ["--ids", "[1]", "--headless", "0", "--user_data", "0", "--keyboard", "0", + "args": ["--ids", "[11]", "--headless", "0", "--user_data", "0", "--keyboard", "0", "--read_type", "remote"] // "args": "--ids '[97]' --user_data 1 --server_address http://localhost:8074 --config_folder '/Users/naibo/Documents/EasySpider/ElectronJS/' --headless 0 --read_type remote --config_file_name config.json --saved_file_name" } diff --git a/ExecuteStage/generateExecutable_Macos.sh b/ExecuteStage/generateExecutable_Macos.sh index 0f72a3f..dbdd180 100755 --- a/ExecuteStage/generateExecutable_Macos.sh +++ b/ExecuteStage/generateExecutable_Macos.sh @@ -1,7 +1,7 @@ rm -r build rm -r dist -pyinstaller -F --icon=favicon.ico easyspider_executestage.py -rm ../.temp_to_pub/EasySpider_MacOS_all_arch/easyspider_executestage +pyinstaller -F --icon=favicon.ico --add-data "/Users/naibo/anaconda3/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.so:onnxruntime/capi" --add-data "/Users/naibo/anaconda3/lib/python3.11/site-packages/ddddocr/common_old.onnx:ddddocr" easyspider_executestage.py +rm ../.temp_to_pub/EasySpider_MacOS/easyspider_executestage rm ../ElectronJS/easyspider_executestage -cp dist/easyspider_executestage ../.temp_to_pub/EasySpider_MacOS_all_arch/easyspider_executestage +cp dist/easyspider_executestage ../.temp_to_pub/EasySpider_MacOS/easyspider_executestage # mv dist/easyspider_executestage ../ElectronJS/easyspider_executestage