2024-08-19



import requests
 
# 目标URL
url = 'https://api.example.com/data'
 
# 发送HTTP GET请求
response = requests.get(url)
 
# 检查请求是否成功
if response.status_code == 200:
    # 请求成功,处理数据
    data = response.json()
    print("数据获取成功:", data)
else:
    # 请求失败,处理错误
    print("请求失败,状态码:", response.status_code)

这段代码使用Python的requests库向指定的URL发送一个HTTP GET请求,并根据请求的结果打印出相应的处理信息。如果请求成功,它会解析JSON格式的响应数据并打印出来。如果请求失败,它会打印出HTTP状态码。这是学习爬虫时的基本模板,展示了如何开始发送网络请求和处理响应。

2024-08-19



from appium import webdriver
from time import sleep
 
# 设置Desired Capabilities
desired_caps = {
    'platformName': 'Android', # 设备平台
    'deviceName': 'My Device', # 设备名称
    'appPackage': 'com.example.app', # 应用包名
    'appActivity': '.MainActivity', # 应用的Activity
    'noReset': True, # 不重置应用状态
    'unicodeKeyboard': True, # 使用Unicode输入法
    'resetKeyboard': True # 重置输入法
}
 
# 初始化webdriver
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
 
# 执行一些操作
driver.find_element_by_id("com.example.app:id/button_start").click() # 点击开始按钮
sleep(5) # 等待5秒
 
# 获取并打印文本
text_element = driver.find_element_by_id("com.example.app:id/text_result")
print(text_element.text) # 打印结果文本
 
# 关闭webdriver
driver.quit()

这段代码展示了如何使用Appium和Python客户端来控制一个Android应用,执行自动化操作。首先设置了Desired Capabilities,用于指定测试的平台、设备、应用信息等。然后初始化了WebDriver,并进行了一些基本的自动化操作,如点击按钮和获取文本信息。最后,清理会话,关闭WebDriver。这是一个简单的示例,实际应用中可能需要更复杂的逻辑和错误处理。

2024-08-19



import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class QunarCrawler {
 
    public static void main(String[] args) {
        String url = "https://www.qunar.com/";
        try {
            Document doc = Jsoup.connect(url).get();
            Elements elements = doc.select("div.product_li > div.product_img > a");
            for (Element element : elements) {
                String productUrl = element.attr("href");
                String productName = element.attr("title");
                System.out.println("产品名称: " + productName);
                System.out.println("产品URL: " + productUrl);
                // 可以继续解析产品详情页
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这段代码使用了Jsoup库来解析去哪儿网站的首页,并获取了所有产品的名称和URL。这是一个简单的网络爬虫示例,展示了如何使用Jsoup库进行基本的网页解析。在实际应用中,可以根据需要进一步解析产品详情页面以获取更多信息。

2024-08-19



import sys
import os
import subprocess
 
def extract_pyinstaller_files(path_to_exe):
    """
    使用 PyInstaller Extractor 工具从 .exe 文件中提取内容。
    """
    extractor_path = 'path/to/pyinstaller_extractor.py'
    subprocess.run([sys.executable, extractor_path, path_to_exe], check=True)
 
def uncompile_pycode_object(path_to_pyc):
    """
    使用 uncompyle6 工具来反编译 .pyc 文件并获取 Python 源代码。
    """
    uncompyle6_path = 'path/to/uncompyle6'
    output_path = os.path.splitext(path_to_pyc)[0] + '.py'
    subprocess.run([uncompyle6_path, path_to_pyc, '-o', output_path], check=True)
 
# 示例使用
extract_pyinstaller_files('path/to/your/program.exe')
uncompile_pycode_object('path/to/extracted/content/one_of_the_pyc_files')

在这个示例中,我们定义了两个函数:extract_pyinstaller_filesuncompile_pycode_objectextract_pyinstaller_files 函数使用一个假设的 PyInstaller Extractor 工具来提取 .exe 文件中的内容。uncompile_pycode_object 函数使用 uncompyle6 工具来反编译 .pyc 文件并将结果保存为 .py 文件。这两个函数都通过调用子进程来运行相应的工具。

注意:这个示例假设 pyinstaller_extractor.pyuncompyle6 的路径是正确的。在实际使用中,需要替换为实际的路径。

2024-08-19



from httpx import AsyncClient
import asyncio
 
async def fetch_html(url):
    async with AsyncClient() as client:
        response = await client.get(url)
        return response.text
 
async def main():
    url = "https://www.example.com"
    html = await fetch_html(url)
    print(html)
 
# 运行事件循环
asyncio.run(main())

这段代码使用了httpx库以异步方式发送HTTP GET请求,获取指定URL的HTML内容,并打印输出。这里的fetch_html函数是异步的,它使用了AsyncClient来发送请求,并在结束时返回响应的文本内容。main函数则是异步的主入口点,它调用fetch_html并等待其结果,然后打印HTML内容。最后,使用asyncio.run来运行事件循环并启动异步任务。

2024-08-19

以下是一个简化的Python爬虫代码示例,用于爬取微博用户的主页信息。




import requests
from bs4 import BeautifulSoup
 
# 微博用户主页URL
user_url = 'https://weibo.com/yourusername'
 
# 发送HTTP请求
response = requests.get(user_url)
 
# 检查请求是否成功
if response.status_code == 200:
    # 使用BeautifulSoup解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取微博数据
    weibos = soup.find_all('div', class_='info')
    
    # 打印微博内容
    for weibo in weibos:
        content = weibo.find('span', class_='ctt').text
        print(content)
else:
    print('请求失败')
 

请注意,实际使用时需要替换user_url变量的值为你想要爬取的微博用户的主页URL。此外,微博网站可能会对爬虫行为进行限制,你可能需要处理登录验证、反爬机制等问题,这些在实战中会更复杂。

2024-08-19



import requests
from bs4 import BeautifulSoup
 
def fetch_website_data(url, keyword):
    headers = {
        'User-Agent': 'Your User Agent',
        'From': 'your-email@example.com'  # 可选,用于需要验证的网站
    }
    try:
        # 检查网站是否存在robots.txt限制
        rt_response = requests.get(f'{url}/robots.txt')
        if rt_response.ok:
            robots_txt = rt_response.text
            if 'Disallow' in robots_txt and keyword in robots_txt:
                print(f'Sorry, the keyword "{keyword}" is not allowed to be crawled according to robots.txt')
                return None
        
        # 发送HTTP请求获取网页数据
        response = requests.get(url, headers=headers)
        if response.ok:
            # 使用BeautifulSoup解析网页
            soup = BeautifulSoup(response.text, 'html.parser')
            return soup
        else:
            print(f'Error fetching data: {response.status_code}')
            return None
    except requests.exceptions.RequestException as e:
        print(f'An error occurred: {e}')
        return None
 
# 使用示例
url = 'https://www.example.com'
soup = fetch_website_data(url, 'Crawler')
if soup:
    # 对soup进行数据解析和提取操作
    print(soup.title)

这段代码首先检查网站的robots.txt文件,确认是否允许爬取指定关键字的数据。如果允许,则使用requests库获取网页数据,并使用BeautifulSoup进行解析。最后提供了一个使用示例,展示了如何调用fetch_website_data函数并处理返回的数据。在实际应用中,需要替换'Your User Agent'和'your-email@example.com'为合法的值,以及修改url变量为你想要爬取的网站。

2024-08-19



import scrapy
 
class MySpider(scrapy.Spider):
    name = 'example.com'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com/']
 
    def parse(self, response):
        # 提取页面中的所有链接并进一步爬取
        for href in response.css('a::attr(href)').getall():
            # 构造绝对URL,并进行请求,parse_page方法将在下一页的响应中被调用
            yield response.follow(href, callback=self.parse_page)
 
    def parse_page(self, response):
        # 提取页面中的有效数据
        for item in response.css('div.item'):
            yield {
                'title': item.css('a::text').get(),
                'link': item.css('a::attr(href)').get(),
                'desc': item.css('span::text').get(),
            }

这个简单的Scrapy爬虫示例展示了如何定义一个Spider,包括名称、允许爬取的域名、起始URL和解析方法。parse方法用于提取起始页面的链接,并通过response.follow方法递归地爬取每个页面。parse_page方法用于提取每个页面上的数据项,这里的CSS选择器仅为示例,需要根据实际页面结构进行相应调整。

2024-08-19

以下是一个简单的Python爬虫示例,使用requests和BeautifulSoup库来抓取一个网页的标题。




import requests
from bs4 import BeautifulSoup
 
def get_page_title(url):
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        return soup.title.string
    else:
        return "Error: Page not found or the request was not successful"
 
url = 'https://www.example.com'
title = get_page_title(url)
print(title)

这段代码首先导入了requests和BeautifulSoup。然后定义了一个函数get_page_title,它接受一个URL作为参数,使用requests发送HTTP GET请求,然后使用BeautifulSoup解析返回的HTML内容,提取页面标题。最后,我们打印出页面的标题。

2024-08-19



import requests
from bs4 import BeautifulSoup
import re
 
# 获取网页内容
def get_html(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    return response.text
 
# 解析网页,获取视频信息
def parse_html(html):
    soup = BeautifulSoup(html, 'html.parser')
    video_url = soup.find('video', id='video-player').find_all('source')[-1]['src']
    return video_url
 
# 下载视频
def download_video(video_url, title):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(video_url, headers=headers, stream=True)
    with open(title + '.mp4', 'wb') as f:
        for chunk in response.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)
    print(f'视频 {title} 下载完成。')
 
# 主函数
def main(url):
    html = get_html(url)
    video_url = parse_html(html)
    title = re.findall(r'<title>(.+)</title>', html)[0]
    download_video(video_url, title)
 
# 测试用例
if __name__ == '__main__':
    url = 'https://www.****.com/video/****'  # 替换为你要下载视频的网页链接
    main(url)

这段代码首先定义了获取网页内容、解析网页、下载视频的函数。主函数中调用这些函数来完成视频的下载。需要注意的是,这只是一个简单的示例,实际使用时可能需要处理更多的异常情况和网站特定的反爬虫策略。此外,下载内容应遵守相关法律法规,不违反版权法律法规。